示例#1
0
文件: bqrw.go 项目: roger2000hk/flib
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
}
示例#2
0
文件: bqarl.go 项目: roger2000hk/flib
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
}
示例#3
0
文件: bqrw.go 项目: roger2000hk/flib
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
}
示例#4
0
文件: bqarl.go 项目: roger2000hk/flib
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
}