lock free到底能不能提高性能

本文讨论了Lockfree编程在解决死锁和活锁问题上的优势,以及其在多核环境下对程序性能的影响。通过对比锁机制与原子指令,分析了Lockfree在特定场景下可能带来的性能提升。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

不知道lock free的可以看我前一篇文章。lock free这个东西还真是一路波折,争议不断。最近连续看到有不少大牛(比如12)都曾经或正在讨论这个问题。

lock free对于dead/live lock问题的解决这点应该是没什么可争议的,这也确实是lock free最大的好处。

讨论得比较多的还是集中在算法的性能上,毕竟多核时代multiprogramming主要还是要解决程序性能瓶颈的问题。虽然我个人并不是太关心lock或者lock free对性能的影响,但大家对性能的追求总是无止境的……

映像中以前有些文章测试过lock free带来的性能上的改善,好象是某些情况下可以多达4倍左右,当然这个数字本身没什么意义。众所周知,performance的问题受太多的因素影响,多核就更复杂了,总而言之是软硬件共同作用的结果。不过如果真的是在某些测试下速度可以提高好几倍,这个应该是相当可观的了。

不过很多讨论(还是这个)都认为lock free里面用到的那些CPU的原子指令最终还是需要用到lock一样的机制来实现,所以和直接用lock的算法相比性能基本上不应该有提高。这个观点我是不太赞成的,从概念上讲像CMPXCHG这样的指令当然可以理解成内部用了一把锁,实际上处理器用的应该是锁总线的方法。我们通常讲的真正的lock,这个是操作系统层的概念,至于内部是如何实现的不是很清楚,不过可以肯定的是对锁的各种操作(检查、获取、释放)相对一条简单的原子指令来说都是非常重量级的。毕竟锁要面对的问题也要比一条原子指令复杂得多。所以,用原子指令替换系统lock的方案应该还是会有一些性能提升的。至于提升多少,这个得看具体case了,不过应该不只是那种可以忽略的提高。原子指令相对OS上的锁来说正是利用了硬件对并发的专门支持,毕竟特化的东西通常情况下总是比通用的方案更适合一些(否则也就不需要特化了)。搞过某些特定应用(比如视频处理)的人都知道,一般都是先用软件来模拟实现和验证某个逻辑,但是到最后可能还是要靠一些专用的电路来提速,其实道理有点类似。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值