func bqarlDequeue(msgCount, msgSize int64, q *spscq.ByteQ, done chan bool) { runtime.LockOSThread() start := time.Now().UnixNano() sum := int64(0) checksum := int64(0) for i := int64(0); i < msgCount; i++ { readBuffer := q.AcquireRead(msgSize) for len(readBuffer) == 0 { readBuffer = q.AcquireRead(msgSize) } sum += int64(readBuffer[0]) checksum += int64(byte(i)) rem := msgSize - int64(len(readBuffer)) q.ReleaseReadLazy() for rem > 0 { readBuffer = q.AcquireRead(rem) rem -= int64(len(readBuffer)) q.ReleaseReadLazy() } } nanos := time.Now().UnixNano() - start printSummary(msgCount, nanos, q.FailedWrites(), q.FailedReads(), "bqarl") expect(sum, checksum) done <- true }