func pqrwDequeue(msgCount int64, q *spscq.PointerQ, batchSize int64, done chan bool) { runtime.LockOSThread() start := time.Now().UnixNano() sum := int64(0) checksum := int64(0) t := int64(1) buffer := make([]unsafe.Pointer, batchSize) for t < msgCount { if batchSize > msgCount-t { buffer = buffer[:msgCount-t] } for r := false; r == false; r = q.Read(buffer) { } for i := range buffer { t++ sum += int64(uintptr(buffer[i])) checksum += t } } nanos := time.Now().UnixNano() - start printSummary(msgCount, nanos, q.FailedWrites(), q.FailedReads(), "pqrw") expect(sum, checksum) done <- true }