queue不行的地方:
1、在内存中不能连续加载到一级缓存
2、删除时要gc回收
3、要对head tail size加锁,并且它们可能会存在于同一个cacheline里,导致伪共享
没有竞争、没有锁
没有伪共享
所有访问者都记录自己的序号的实现方式???
RingBuffer
因为它是数组,所以要比链表快,而且有一个容易预测的访问模式
数组中的元素是会被预加载的
不删除buffer中的数据
sequence & (array length-1)代替mod
1、在内存中不能连续加载到一级缓存
2、删除时要gc回收
3、要对head tail size加锁,并且它们可能会存在于同一个cacheline里,导致伪共享
4、如果size不受限制可能会导致内存溢出
没有竞争、没有锁
没有伪共享
所有访问者都记录自己的序号的实现方式???
RingBuffer
因为它是数组,所以要比链表快,而且有一个容易预测的访问模式
数组中的元素是会被预加载的
不删除buffer中的数据
sequence & (array length-1)代替mod