我读了一章,我不喜欢它.我还不清楚每个内存顺序之间的差异.这是我目前的推测,我在阅读更简单的http://en.cppreference.com/w/cpp/atomic/memory_order后理解这一点.
以下是错误的,所以不要试图从中学习
- memory_order_relaxed:当从另一个原子var中的另一个模式完成订单时,不同步但不被忽略
- memory_order_consume:Syncs读取这个原子变量然而它没有同步在此之前写的轻松变量.但是,如果线程在修改Y(并释放它)时使用var X. 消耗Y的其他线程也将看到X发布?我不知道这是否意味着这个线程推出了x的变化(显然是y)
- memory_order_acquire:同步读取这个原子变量并确保在此之前写入的轻松变量同步.(这是否意味着所有线程上的所有原子变量都被同步?)
- memory_order_release:将原子存储推送到其他线程(但仅当它们使用consume/acquire读取var时)
- memory_order_acq_rel:用于读/写操作.获取是否因此您不修改旧值并释放更改.
- memory_order_seq_cst:与获取版本相同的东西,除了它强制在其他线程中看到更新(如果
a在另一个线程上放宽了存储.我b用seq_cst 存储.第三个线程读取a 放松将看到变化以及b任何其他原子变量? ).
如果我错了,我想我理解但是纠正我.我找不到任何用易于阅读的英语解释它的东西.