我读了一章,我不太喜欢。我还是不清楚每个记忆顺序之间有什么不同。这是我目前的推测,我理解后,阅读更简单的 http://en.cppreference.com/w/cpp/atomic/memory_order
下面的内容是错误的,所以不要试图从中吸取教训
- Memory _ order _ release: 不同步,但是当从另一个模式在不同的原子变量中执行订单时不会被忽略
- Memory _ order _ consumer: 同步读取这个原子变量,但是它不同步在此之前编写的松弛变量。但是,如果线程在修改 Y 时使用 var X (并释放它)。其他消耗 Y 的线程也会看到 X 被释放?我不知道这是否意味着这个线程推出了 x (当然还有 y)的变化
- Memory _ order _ access: 同步读取这个原子变量,并确保在同步之前写入的松弛变量也被同步。(这是否意味着所有线程上的所有原子变量都是同步的?)
- Memory _ order _ release: 将原子存储推送到其他线程(但是只有当它们通过使用/获取读取 var 时)
- Memory _ order _ acq _ rel: 用于读/写操作。执行一个获取操作,这样您就不会修改旧值并释放更改。
- memory_order_seq_cst: The same thing as acquire release except it forces the updates to be seen in other threads (if
a
store with relaxed on another thread. I store b
with seq_cst. A 3rd thread reading a
with relax will see changes along with b
and any other atomic variable?).
我想我明白了,但如果我错了就纠正我。我找不到任何简单易懂的英语解释。