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

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

需要几个变量:

生产者 index

消费者 index

数组大小

最重要的一个环节:

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

伪代码:

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

END…



对Python及运维开发感兴趣的朋友可以加QQ群 : 478476595 !!!
{ 2000人qq大群内有各厂大牛,常组织线上分享及沙龙,对高性能及分布式场景感兴趣同学欢迎加入该QQ群 }

另外如果大家觉得文章对你有些作用!   帮忙点击广告. 一来能刺激我写博客的欲望,二来好维护云主机的费用.
如果想赏钱,可以用微信扫描下面的二维码. 另外再次标注博客原地址  xiaorui.cc  ……   感谢!

评论已关闭。