C++11引入了标准化的内存模型,但这到底意味着什么?它将如何影响C++编程?
这篇文章(加文·克拉克引用赫伯·萨特的话)说,
内存模型意味着C++代码现在有一个标准化的图书馆可以调用无论编译器是谁制造的以及在哪个平台上运行。有一种标准的方法来控制不同的线程与处理器的内存。“当你谈论分裂时[代码]跨越不同的核心在标准中,我们谈论的是记忆模型。我们将在不破坏以下假设萨特说。
嗯,我可以在网上记住这段和类似的段落(因为我从出生起就有自己的记忆模型:P),甚至可以发帖回答别人提出的问题,但老实说,我并不完全理解这一点。
C++程序员以前就开发过多线程应用程序,那么,是POSIX线程、Windows线程还是C++11线程又有什么关系呢?有什么好处?我想了解底层细节。
我还感觉到,C++11内存模型与C++11多线程支持有某种关系,正如我经常看到的那样。如果是,具体如何?为什么它们应该是相关的?
我不知道多线程的内部工作原理,也不知道内存模型的一般含义。
这是一个已有多年历史的问题,但非常受欢迎,值得一提的是,这是一份了解C++11内存模型的绝佳资源。我认为总结他的演讲是没有意义的,以便做出另一个完整的答案,但考虑到这是真正编写标准的人,我认为很值得观看演讲。
赫伯·萨特(Herb Sutter)就C++11内存模型进行了长达三个小时的演讲,题为“原子武器”(atomic<>Weapons),可在第9频道网站YouTube上获得-第1部分和第2部分。这场演讲技术性很强,涉及以下主题:
优化、竞赛和内存模型订购–内容:获取和发布订购–方式:互斥、原子和/或围栏对编译器和硬件的其他限制代码生成和性能:x86/x64、IA64、POWER、ARM放松原子学
演讲没有详细阐述API,而是讨论了推理、背景、幕后和幕后(你知道吗,放松的语义只是因为POWER和ARM不能有效地支持同步加载而被添加到标准中的吗?)。
这是一个已有多年历史的问题,但非常受欢迎,值得一提的是,这是一份了解C++11内存模型的绝佳资源。我认为总结他的演讲是没有意义的,以便做出另一个完整的答案,但考虑到这是真正编写标准的人,我认为很值得观看演讲。
赫伯·萨特(Herb Sutter)就C++11内存模型进行了长达三个小时的演讲,题为“原子武器”(atomic<>Weapons),可在第9频道网站YouTube上获得-第1部分和第2部分。这场演讲技术性很强,涉及以下主题:
优化、竞赛和内存模型订购–内容:获取和发布订购–方式:互斥、原子和/或围栏对编译器和硬件的其他限制代码生成和性能:x86/x64、IA64、POWER、ARM放松原子学
演讲没有详细阐述API,而是讨论了推理、背景、幕后和幕后(你知道吗,放松的语义只是因为POWER和ARM不能有效地支持同步加载而被添加到标准中的吗?)。