首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单线程中的内存屏障

单线程中的内存屏障
EN

Stack Overflow用户
提问于 2014-04-15 08:26:08
回答 1查看 345关注 0票数 4

我有一个关于记忆障碍的问题。

在多线程应用程序中,如果数据在它们之间共享,则必须使用内存屏障,因为在一个内核上运行的线程中的写可能不会被另一个内核上的另一个线程看到。

根据我从其他关于内存障碍的解释中所读到的,有人说,如果有一个线程处理某些数据,则不需要内存屏障。

这是我的问题:可能是线程修改了特定内核上的一些数据,然后调度程序决定将该线程迁移到另一个核心。

这个线程是否可能不会看到它在另一个核心上所做的修改?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-15 08:42:55

原则上:是的,如果程序执行从一个内核移动到另一个内核,它可能不会看到发生在前一个核心上的所有写操作。

不过,请记住,进程不会自行切换核心。是操作系统抢先执行并将线程移动到一个新的核心。因此,在执行上下文切换时,确保内存操作正确同步也是操作系统的责任。

对于程序员来说,这意味着,只要您不尝试在没有SMP感知操作系统的级别上工作(例如,当您试图编写自己的操作系统或在没有完全成熟的OS的嵌入式平台上工作时),您就不需要担心这种情况下的同步问题。

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

https://stackoverflow.com/questions/23078266

复制
相关文章

相似问题

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