设计实现ringbuffer无锁队列(lock free queue)

前两天跟同事交流了 无锁队列的问题,发现不少人对这个lock free的概念有些匮乏,这里就简单写个ringbuffer实现lock free的设计理念。  这里拿python举例子,ringbuffer其实就是个数组,单纯的数组结构肯定不能实现线程安全问题。

该文章写的有些乱,欢迎来喷 ! 另外文章后续不断更新中,请到原文地址查看更新.  

需要几个变量:

生产者 index

消费者 index

数组大小

最重要的一个环节:

原子计数, python下是没有原子计数的,我们可以借助gcc的sync_fetch_and_add来实现原子计数。 可以参考这个项目    http://xiaorui.cc/?p=4613

伪代码:

(参照了一些github的ringbuffer实现,大同小异…)

END…