C++ 的无锁数据结构在工业界有真正的应用吗?

论坛 期权论坛 期权     
葫芦屯王大力   2018-10-17 22:48   8699   8
C++大大stroustrup在论文里面实现了一个无锁动态数组(http://www.stroustrup.com/lock-free-vector.pdf), 有人复现过该实现吗?如果实现了, 如何利用Linearization Points等理论证明你的实现是对的(多线程执行顺序组合指数级上升,测试无法覆盖)?
另外, 工业界有人使用boost::lockfree库的代码吗?如果有,在实际应用中 对真实性能提升有多大?
说来说去就是一句话,工业界自己造无锁动态数组的轮子(非常复杂,维护性差, 应用场合待证明)意义大吗?
分享到 :
0 人收藏

8 个回复

倒序浏览
2#
匿名用户   | 2018-10-17 22:48:27 发帖IP地址来自
提示: 作者被禁止或删除 内容自动屏蔽
3#
匿名用户   | 2018-10-17 22:48:28 发帖IP地址来自
提示: 作者被禁止或删除 内容自动屏蔽
4#
pojol  1级新秀 | 2018-10-17 22:48:29 发帖IP地址来自
我在实现游戏服务器网络层的时候有用到过,单一生产消费的无锁队列。具体的使用场景是我的网络层是多线程的,但把消息投递给逻辑层必须是单线程的(多线程逻辑太复杂,一般的网络游戏都才用单线程逻辑实现)。 所以我每个线程都创建了一个类似kfifo的ringbuffer,在消息过来的时候写入,由主线程来模拟消费者读出,派发给逻辑层。
5#
磨豆君  3级会员 | 2018-10-17 22:48:30 发帖IP地址来自
似乎在高频交易中有广泛应用
6#
jake   | 2018-10-17 22:48:31 发帖IP地址来自
提示: 作者被禁止或删除 内容自动屏蔽
7#
前端交友  2级吧友 | 2018-10-17 22:48:32 发帖IP地址来自
Ring buffer, mpmc queue,queued spinlock 不能更常用 比随手实现的快太多了

数据库用的就更多了,比如be tree 被数据库届歹徒Andy pavlo誉为 第一个超越了世界上最牛逼的系统编程者Eddie kohler 水平的数据结构
8#
大黄  2级吧友 | 2018-10-17 22:48:33 发帖IP地址来自
多线程服务器会使用,以下列举一些场景:
1. 异步处理,使用lockfree queue,比如,异步打日志提高服务器性能;
2. monitor,使用atom操作,lockfree结构保存需要多线程merge的数据;
3. index;
4. 内存数据,尤其是需要支持server不重启,load内存的这种;
9#
范子逸  2级吧友 | 2018-10-17 22:48:36 发帖IP地址来自
C语言的无锁结构在Linux内核中有非常多的应用。
但是都用了C++了,我觉得无锁带来的性能提升不能抵消复杂度增长导致的维护困难吧。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP