Example #1
0
func extqEnqueue(msgCount int64, q *spscq.ExtQ, batchSize int64, done chan bool) {
	runtime.LockOSThread()
	var t int64
OUTER:
	for {
		low, high := q.WriteBuffer(batchSize)
		for low == high {
			low, high = q.WriteBuffer(batchSize)
		}
		for i := low; i < high; i++ {
			t++
			if t > msgCount {
				q.CommitWriteBuffer(i - low)
				break OUTER
			}
			ringBuffer[i&mask] = unsafe.Pointer(uintptr(t))
		}
		q.CommitWriteBuffer(high - low)
		if t == msgCount {
			break
		}
	}
	done <- true
}