免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: ydfgic

[C] 【最终版 & 总结】自实现自旋锁 与 mutex,spinlock比较(结果令人吃惊) [复制链接]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
发表于 2011-07-29 13:56 |显示全部楼层
晕乎, while(i++ < DELAY_NR) 就是最恶劣的忙等。

论坛徽章:
0
发表于 2011-07-29 14:02 |显示全部楼层
回复 11# 群雄逐鹿中原
但是有什么办法呢?
我找不出有什么可以改进的方法。也许我可以设置条件放弃时间片。但违背了自旋锁的设计原则。
posix的自旋锁 效率还低下些

论坛徽章:
4
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:11
发表于 2011-07-29 14:03 |显示全部楼层
哎……自旋锁是用在多核上面的啊……是两个不同核心同步的时候用的哇哇……你一次开20个线程跑两个CPU自旋锁的效率能不低么?所谓自旋就是忙等,等另外一个核心同步。在你的场景里面自旋效率越低证明它实现得越好= =

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
发表于 2011-07-29 14:05 |显示全部楼层
回复  群雄逐鹿中原
但是有什么办法呢?
我找不出有什么可以改进的方法。也许我可以设置条件放弃时间片。 ...
ydfgic 发表于 2011-07-29 14:02



    有啊,禁止线程切换,比如关中断。我写嵌入式都这么干的。x86怎么做,不太懂。

论坛徽章:
0
发表于 2011-07-29 14:39 |显示全部楼层
回复 9# 群雄逐鹿中原


同意,用户空间的自旋锁根本就不靠谱

论坛徽章:
0
发表于 2011-07-29 14:53 |显示全部楼层
最近在研究原子操作,按网上一些资料实现了个自旋锁
拿来和 posix 的mutex,spinlock 一起测,结果出乎我意 ...
ydfgic 发表于 2011-07-29 11:39


由于你的测试代码里面,while循环里面基本上只有进出锁,所以lock是经常会碰撞的。(你设想一下那20个线程都在做什么)

当锁碰撞的时候,spin lock会浪费大量cpu,这是已知的特性。

在没有锁碰撞的测试用例里面,spinlock大概比mutex快一倍。

如何测试锁的性能,可以参考IBM的文章。我忘了具体连接了。不过测锁性能并不是简单的写个while循环就可以的。

论坛徽章:
0
发表于 2011-07-29 15:24 |显示全部楼层
有啊,禁止线程切换,比如关中断。我写嵌入式都这么干的。x86怎么做,不太懂。
群雄逐鹿中原 发表于 2011-07-29 14:05



   不会汇编 :(,关不了中断。
我只能尽力写到这个层面了。
在你的启发下我更新了,结果提高了很高的效率,代码在1楼更新了。

论坛徽章:
0
发表于 2011-07-29 15:26 |显示全部楼层
由于你的测试代码里面,while循环里面基本上只有进出锁,所以lock是经常会碰撞的。(你设想一下那20个线 ...
wwwsq 发表于 2011-07-29 14:53



    其实我也考虑到碰撞问题,开20个就是想模拟繁忙的情况。实现已经改进,加入了放弃时间片的选择。没想到效率提高非常大,是mutex的2-3倍。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
发表于 2011-07-29 15:39 |显示全部楼层
何不将  do_hash(*foo);  \
            if((*foo % 11) == 1)    \
去掉?

论坛徽章:
0
发表于 2011-07-29 15:47 |显示全部楼层
所以说没有正确使用spinlock也是很悲剧的,锁颗粒要细,以及最好不要用在经常锁等待的场合。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

SACC2019中国系统架构师大会

【数字转型 架构演进】SACC2019中国系统架构师大会
2019年10月31日~11月2日第11届中国系统架构师大会(SACC2019)将在北京隆重召开。四大主线并行的演讲模式,1个主会场、20个技术专场、超千人参与的会议规模,100+来自互联网、金融、制造业、电商等领域的嘉宾阵容,将为广大参会者提供一场最具价值的技术交流盛会。




----------------------------------------

大会官网>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP