引用自 C++并发操作 $ list 5.9
我很难理解上面的段落。如果是fetch_sub
带有memory_order_acquire
语义的操作无法进行任何同步操作,为什么fetch_sub
的接口(interface)为我们留下了如下的存储顺序参数?T fetch_sub( T arg, std::memory_order order = std::memory_order_seq_cst ) noexcept;
最佳答案
memory_order_acquire
RMW操作无法与任何内容同步,但是memory_order_release
存储与获取从存储中读取的值的memory_order_acquire
RMW操作同步。同样,虽然memory_order_release
存储区不与memory_order_release
RMW同步,但memory_order_release
RMW可以与memory_order_acquire
负载同步。 memory_order_acq_rel
。 关于c++ - 为什么fetch_sub不执行释放操作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50500443/