V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
vansenb
V2EX  ›  问与答

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

  •  
  •   vansenb · Feb 18, 2021 · 1560 views
    This topic created in 1904 days ago, the information mentioned may be changed or developed.
    看了一些 CPU 原子操作 CAS 相关的文章( Rust/Golang ),也看了其他关于无锁并发的实现方式( RingBuffer ),但是苦于自己笨手笨脚,不知道如何实现一个用于无锁并发的 RingBuffer,也不知道如何使用它。希望 V2EX 这里有大佬能够指点一下,给出一些实现,谢谢啦!🙏

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

    求文章
    vansenb
        3
    vansenb  
    OP
       Feb 19, 2021
    @zhoudaiyu 我看的是极客时间上张汉东的 Rust 专栏和李钥的消息队列高手课专栏,里面都有无锁并发相关的介绍和代码示例。其它一些例如博客园、个人博客的通过搜索引擎找一下就好,不太确定博客上的内容正确性。
    zhoudaiyu
        4
    zhoudaiyu  
    PRO
       Feb 19, 2021
    @vansenb 感谢
    hxndg
        5
    hxndg  
       Feb 19, 2021
    DPDK 的 mc/mp rte_ring ?
    语言是 C /C++
    不过我们用的都是系统级别,不是给消息队列用的。。。。
    不知道合不合适
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2600 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 43ms · UTC 16:08 · PVG 00:08 · LAX 09:08 · JFK 12:08
    ♥ Do have faith in what you're doing.