golang(1)

golang 中的  poolDequeue 是 ring buffer 的一种实现. ring buffer 是一种无锁循环队列。这里的 poolDequeue 仅支持1个生产者,但可以有多个消费者(通过 CAS 实现),因为无锁,所以性能非常好。ring buffer 这里不展开,网上很多资料。


这里重点通过 eface 和 dequeueNil 来阐明golang 中的 interface{} 是由 type 和 value 2个机器字组成。当 type 和 value 都为nil(即null ) 时, 才为 nil 的interface;当 type!=nil,value==nil 时,不是 nil 的interface.