func batchqBatchDequeue(msgCount int64, q *spscq.BatchQ, batchSize int64, done chan bool) { runtime.LockOSThread() start := time.Now().UnixNano() var sum int64 var checksum int64 var t int64 var buffer []unsafe.Pointer OUTER: for { buffer = q.ReadBuffer(batchSize) for buffer == nil { buffer = q.ReadBuffer(batchSize) } for i := range buffer { t++ if t > msgCount { q.CommitReadBuffer(int64(i)) break OUTER } sum += int64(uintptr(buffer[i])) checksum += t } q.CommitReadBuffer(int64(len(buffer))) if t == msgCount { break } } nanos := time.Now().UnixNano() - start printTimings(msgCount, nanos, "batchq") expect(sum, checksum) done <- true }