首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >并发的C++03内存模型是什么?

并发的C++03内存模型是什么?
EN

Stack Overflow用户
提问于 2008-10-21 04:19:39
回答 6查看 9.6K关注 0票数 36

C++03中的并发内存模型是什么?

(而且,C++11是否更改了内存模型以更好地支持并发性?)

EN

回答 6

Stack Overflow用户

发布于 2008-10-21 07:27:04

看到一些其他的答案,似乎许多C++程序员甚至不知道您所问的“内存模型”是什么意思。

从某种意义上讲,问题是关于内存模型:关于写/读重新排序(可能发生在编译器端或运行时端)有什么保证(如果有)?这个问题对于多线程编程非常重要,因为如果没有这样的规则,编写正确的多线程程序是不可能的,有些令人惊讶的事实是,由于目前缺乏显式的内存模型,许多多线程程序或多或少都是“靠运气”--最常见的是由于编译器假设了函数调用中的指针别名。-请参阅

在当前的C++中,没有标准的内存模型。一些编译器定义了易失性变量的内存模型,但这是非标准的。C++0x为此定义了新的“原子”原语。有关检查最新状态的详尽起点,请访问Threads and memory model for C++

重要的链接还包括Concurrency memory modelAtomic TypesC++ Data-Dependency Ordering: Atomics and Memory Model标准提案。

票数 23
EN

Stack Overflow用户

发布于 2008-10-21 04:54:04

不幸的是,在C++中没有像Java语言那样的“标准内存模型”。实际的实现留给了编译器、运行时库和处理器。

因此,C++内存模型==混杂的模型,这意味着您总是必须尝试编写不依赖于特定内存模型的安全代码,这也适用于线程编程,因为编译器可以在临界区之外执行任何它想要的优化,甚至是无序处理!

票数 2
EN

Stack Overflow用户

发布于 2008-10-21 07:23:33

如何查看C++标准委员会网站上的论文:

  • C++ Data-Dependency Ordering: Atomics and Memory Model
  • etc
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/220752

复制
相关文章

相似问题

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