首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >顺序一致性和获取/发布语义之间有什么区别?

顺序一致性和获取/发布语义之间有什么区别?
EN

Stack Overflow用户
提问于 2019-12-12 18:29:09
回答 2查看 446关注 0票数 2

据我所知,获取/发布语义是顺序一致性和弱内存模型(或C++所称的“放松”)所允许的无条件内存重新排序自由之间的中间地带。简而言之:

  • 获取语义,可以防止按程序顺序对read进行任何readwrite操作的内存重新排序;
  • 发布语义可以防止以任何readwrite操作对write按程序顺序排序。H 210F 211

凉爽的。但是这些保证,加在一起,在我看来是连续一致的。什么是顺序一致性提供的,获取/发布的语义在一起不能?你能举个例子吗?

EN

回答 2

Stack Overflow用户

发布于 2019-12-12 19:09:08

票数 2
EN

Stack Overflow用户

发布于 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上)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59310765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档