qbl*_*ble 3 c++ atomic memory-model lock-free c++11
我正在阅读Anthony Williams的C++ Concurrency in Action.在"理解轻松订购"部分,它有:
还有一些额外的东西可以告诉那个小隔间里的男人,比如"记下这个号码,并告诉我列表底部的内容 "(交换)和"如果底部的数字写下这个号码" 列表是那个; 否则告诉我我应该猜到的"(compare_exchange_strong),但这并不影响一般原则.
这是否意味着此类操作始终按修改顺序读取最后一个值(如果在约束之前没有其他内部线程发生)?即,有一些缓存更新/等(即使在轻松的订购)?
是.C++标准说(29.3/10):
原子读 - 修改 - 写操作应始终读取与读 - 修改 - 写操作相关的写操作之前写入的最后一个值(按修改顺序).
两者exchange和成功的compare_exchange_{weak,strong}操作都是读 - 修改 - 写操作.