首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >读记忆障碍的含义是什么?

问读记忆障碍的含义是什么?
EN

Stack Overflow用户
提问于 2014-03-05 17:26:08
回答 2查看 523关注 0票数 2

我见过一些关于Linux内存障碍的文档。它提到了读记忆障碍和写记忆障碍。我很容易理解写记忆障碍的含义,我看不出读记忆障碍的必要性!

仅仅是为了保持内存区域的读取顺序吗?如果订单是相反的,我认为价值应该仍然是正确的,不是吗?

那么是读记忆障碍:读操作屏障读操作还是写操作屏障读操作?

把我弄糊涂了!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-05 18:36:21

读取内存屏障强制先读后读,然后再读完。例如,在内存映射的I/O中,从内存读取的数据实际上是从连接到系统的某个设备读取的数据。

MMIO读取需要按程序顺序执行,因为它们可能会对您正在读取的设备产生副作用。例如,如果设备是流数据,读取该值可能会导致设备用新值替换它。它还可能导致在不同的MMIO位置触发更改的操作。因此,必须对这两个位置的读取进行排序,因为结果取决于它们执行的顺序。

票数 2
EN

Stack Overflow用户

发布于 2014-03-06 15:26:08

即使是没有副作用的读物,有时也必须订购。请考虑以下成语:

代码语言:javascript
复制
extern some_flag_type message_is_ready_flag;
extern some message_type message_data;
while(message_is_ready_flag)     // First read
    continue;
... = message_data;              // Second read

假设其他线程将首先写入message_data,然后写到message_is_ready_flag。

如果在上面的代码中,第二次读取发生在第一次,它可能不会读取预期的值。请注意,写入线程需要使用相应的编写器屏障。这就是为什么Linux文档指出“阅读障碍通常应该与写障碍配对”的原因。

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

https://stackoverflow.com/questions/22204839

复制
相关文章

相似问题

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