V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
vansenb
V2EX  ›  问与答

无锁并发的 RingBuffer 有简单易懂的代码实现吗

  •  
  •   vansenb · 2021-02-18 21:39:42 +08:00 · 928 次点击
    这是一个创建于 1352 天前的主题,其中的信息可能已经有所发展或是发生改变。
    看了一些 CPU 原子操作 CAS 相关的文章( Rust/Golang ),也看了其他关于无锁并发的实现方式( RingBuffer ),但是苦于自己笨手笨脚,不知道如何实现一个用于无锁并发的 RingBuffer,也不知道如何使用它。希望 V2EX 这里有大佬能够指点一下,给出一些实现,谢谢啦!🙏

    如果是 Python 实现,那就更完美了
    5 条回复    2021-02-19 15:24:41 +08:00
    vansenb
        1
    vansenb  
    OP
       2021-02-19 09:14:21 +08:00
    有 GC 的语言可以直接用 CAS 实现无锁并发,但无 GC 的需要处理 ABA 问题。不知道 Ringbuffer 是怎么样的
    zhoudaiyu
        2
    zhoudaiyu  
       2021-02-19 11:31:07 +08:00
    看了一些 CPU 原子操作 CAS 相关的文章( Rust/Golang )

    求文章
    vansenb
        3
    vansenb  
    OP
       2021-02-19 13:11:13 +08:00
    @zhoudaiyu 我看的是极客时间上张汉东的 Rust 专栏和李钥的消息队列高手课专栏,里面都有无锁并发相关的介绍和代码示例。其它一些例如博客园、个人博客的通过搜索引擎找一下就好,不太确定博客上的内容正确性。
    zhoudaiyu
        4
    zhoudaiyu  
       2021-02-19 13:25:18 +08:00
    @vansenb 感谢
    hxndg
        5
    hxndg  
       2021-02-19 15:24:41 +08:00
    DPDK 的 mc/mp rte_ring ?
    语言是 C /C++
    不过我们用的都是系统级别,不是给消息队列用的。。。。
    不知道合不合适
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2697 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 08:29 · PVG 16:29 · LAX 01:29 · JFK 04:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.