免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234
最近访问板块 发新帖
楼主: doofy
打印 上一主题 下一主题

关键字: 双向循环链表 + 生产/消费 + 多线程 + 锁 [复制链接]

论坛徽章:
0
31 [报告]
发表于 2012-05-31 19:07 |只看该作者
回复 30# shanehan


    其实这个东西,还得看汇编,看看是否真的可以~~以我看,有点玄哦

论坛徽章:
0
32 [报告]
发表于 2012-05-31 19:12 |只看该作者
本帖最后由 shanehan 于 2012-05-31 19:14 编辑

汇编一样的也就是看见那条mov或add指令,我第一家公司,这种队列应该是从05年就在用了,到现在都有7年了,那项目的用户量还是很大的,最多的时候同时处理上百万的用户量。
记得以前看过IBM一个同学的文章,linux内核中也有用到无锁环形缓冲区。

论坛徽章:
0
33 [报告]
发表于 2012-05-31 19:14 |只看该作者
回复 32# shanehan


    求源码。

论坛徽章:
0
34 [报告]
发表于 2012-05-31 21:06 |只看该作者
不知道这里的“锁”,指的是哪种?pthread的mutex?支持原子操作的整数算不?
在我的印象里,gcc 4.1+的版本,能够支持__sync_** 这一系列的整数原子操作。如果这样的“锁”能够接受,那么是可以基于环形缓冲区的机制实现一个无锁的队列的。

其实,内核里,很多实现也是用支持原子操作的整数来代替锁的,类型是atomic_t/atomic64_t,还提供一系列的api支持原子读/写。


------------------------------------
欢迎光临我的博客:www.danoking.com [DNK的博客]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP