Lock-Free / Lockless 相关术语

2019-07-23  本文已影响0人  阿群1986

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/

另外可参考 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

术语 sequential consistency

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

上一篇 下一篇

猜你喜欢

热点阅读