func bqrwEnqueue(msgCount, msgSize int64, q *spscq.ByteQ, done chan bool) { runtime.LockOSThread() buffer := make([]byte, msgSize) for i := int64(1); i <= msgCount; i++ { buffer[0] = byte(i) for w := false; w == false; w = q.Write(buffer) { } } done <- true }
func bqarlEnqueue(msgCount, msgSize int64, q *spscq.ByteQ, done chan bool) { runtime.LockOSThread() for i := int64(0); i < msgCount; i++ { writeBuffer := q.AcquireWrite(msgSize) for len(writeBuffer) == 0 { writeBuffer = q.AcquireWrite(msgSize) } writeBuffer[0] = byte(i) rem := msgSize - int64(len(writeBuffer)) q.ReleaseWriteLazy() for rem > 0 { writeBuffer = q.AcquireWrite(rem) rem -= int64(len(writeBuffer)) q.ReleaseWriteLazy() } } done <- true }
func bqrwDequeue(msgCount, msgSize int64, q *spscq.ByteQ, done chan bool) { runtime.LockOSThread() start := time.Now().UnixNano() sum := int64(0) checksum := int64(0) buffer := make([]byte, msgSize) for i := int64(1); i <= msgCount; i++ { for r := false; r == false; r = q.Read(buffer) { } sum += int64(buffer[0]) checksum += int64(byte(i)) } nanos := time.Now().UnixNano() - start printSummary(msgCount, nanos, q.FailedWrites(), q.FailedReads(), "bqrw") expect(sum, checksum) done <- true }
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 }