美文网首页
Lock-Free / Lockless 相关术语

Lock-Free / Lockless 相关术语

作者: 阿群1986 | 来源:发表于2019-07-23 16:39 被阅读0次

    Boost.Lockfree 扩展的 C++ 非标准库

    #include <boost/lockfree/queue.hpp>
    #include <boost/lockfree/spsc_queue.hpp>
    
    #include <boost/lockfree/stack.hpp>
    
    #include <boost/atomic.hpp>
    

    C++ 新标准 std::atomic数据结构类, 支持多线程并发读写

    术语 atomic operations -- 指特定操作(内存读写访问)不允许被分割
    参见最新的 C++11 atomic library standard

    std::atomic<>::is_lock_free()
    std::atomic<>::compare_exchange_weak();
    std::atomic<>::compare_exchange_strong();
    
    /* 定义atomic<int>类型的全局变量 X 和 Y: */
    std::atomic<int> X(0);
    std::atomic<int> Y(0);
    
    int r1, r2;
    
    void thread1()
    {
        X.store(1);
        r1 = Y.load();
    }
    
    void thread2()
    {
        Y.store(1);
        r2 = X.load();
    }
    

    1.术语 memory barriers

    Howells 和 McKenney’s 在Linux内核中实现的内存屏障,参见网址:
    http://www.kernel.org/doc/Documentation/memory-barriers.txt

    2.术语 ABA Problem

    参见维基百科词条 http://en.wikipedia.org/wiki/ABA_problem
    多线程并发操作时,必须设法避免ABA问题

    3.术语CAS

    参见维基百科词条 https://en.wikipedia.org/wiki/Compare-and-swap

    4.术语RMW

    术语RMW和术语CAS也可以参考博客文章《An Introduction to Lock-Free Programming》,网址: https://preshing.com/20120612/an-introduction-to-lock-free-programming/

    • Atomic Read-Modify-Write Operations
    • Compare-And-Swap 循环处理

    另外可参考 Geoff Langdale的文章《无锁式编程(Lock-Free Programming)》, 网址: https://www.cs.cmu.edu/~410-s05/lectures/L31_LockFree.pdf

    其他术语

    术语RCU = Read-Copy Update是Linux内核中定义的内存块并发读写防护工具. 参见维基百科词条 https://en.wikipedia.org/wiki/Read-copy-update

    术语SPSC 和术语 MPMC

    • SPSC = Single-Producer / Single-Consumer
      双线程结构:单一生产者+单一消费者
    • MPMC = many-Producer / many-Consumer
      多线程结构:同时存在多个生产者+多个消费者

    术语 sequential consistency

    多线程并发乱序处理一组有序排列的数据,输出的结果中前后顺序可能被打乱,与原始顺序不一致。。。

    相关文章

      网友评论

          本文标题:Lock-Free / Lockless 相关术语

          本文链接:https://www.haomeiwen.com/subject/jjjalctx.html