据我所知,获取/发布语义是顺序一致性和弱内存模型(或C++所称的“放松”)所允许的无条件内存重新排序自由之间的中间地带。简而言之:
read进行任何read或write操作的内存重新排序;read或write操作对write按程序顺序排序。H 210F 211凉爽的。但是这些保证,加在一起,在我看来是连续一致的。什么是顺序一致性提供的,获取/发布的语义在一起不能?你能举个例子吗?
发布于 2019-12-12 19:09:08
发布于 2019-12-13 10:18:50
在硬件方面,acq/rel允许一个线程中的存储/重新加载在其他线程变得全局可见之前存储存储缓冲区中的值。
在seq_cst负载可以从同一个线程重新加载seq_cst存储之前,seq_cst强制存储缓冲区耗尽。
这是https://preshing.com/20120515/memory-reordering-caught-in-the-act/的不同之处--在存储和重新加载之间添加一个完整的内存屏障是从acq_rel到seq_cst所需要的(在x86上)。
https://stackoverflow.com/questions/59310765
复制相似问题