由于未调用_ReadBarrier()而导致错误的示例程序是什么?
_ReadBarrier()上的MSDN文章:
http://msdn.microsoft.com/en-us/library/z055s48f(v=vs.120).aspx
最佳答案
我最喜欢的博客作者的这篇文章将解释您在阅读和书写障碍上遇到的所有问题:Barrier(以及非常幽默和 mock 的方式)
这篇文章相当长,从同步(互斥量)的基础开始,然后深入研究不同的轻量级同步方法,并详细讨论了障碍。在每个步骤中都有示例程序,包括它们具有的奇特行为(以及由于CPU的行为而难以在现代机器上体现这种行为)。
顺便说一句,(引用汉斯的评论)不仅是Itaniums经历了同步错误,还在于Itaniums被设计为在开发人员/编译人员知道他/她/自己正在做什么的情况下充分利用了完全重新排序和并行化的优势。并且会在所有正确的地方使用障碍物。其他平台(例如x86)保证某些指令将按顺序执行,而其他平台(例如x86_64)不保证其他指令的顺序,但实际上(通常)是出于理智和兼容性的考虑,它们将按顺序执行(通常) (请参阅链接的博客文章)。
关于c++ - 由于未调用_ReadBarrier()而导致错误的示例程序是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9952009/