哪个示例程序由于未调用_ReadBarrier()而出现错误

What is an example program that has a bug due to _ReadBarrier() not being called?

本文关键字:ReadBarrier 错误 调用 例程 程序 于未      更新时间:2023-10-16

哪个示例程序由于未调用_ReadBarrier()而出现错误?

MSDN关于_ReadBarrier()的文章:http://msdn.microsoft.com/en-us/library/z055s48f(v=vs.120).aspx

这篇由我最喜欢的博主撰写的文章,将解释你所经历的关于阅读和写作障碍的一切:障碍(也以一种非常幽默和开玩笑的方式)

这篇文章相当长,从同步(互斥)的基础知识开始,然后越来越深入地研究不同的轻量级同步方法,并详细讨论了障碍。每一步都有示例程序,包括它们的奇怪行为(以及由于CPU的行为而使这种行为在现代机器上表现出来的困难)。


顺便说一句,(参考Hans的评论)这并不是说只有Itanium会遇到同步错误,而是Itanium被设计为充分利用完全的重新排序和并行化,前提是开发/编译器知道他/她/它在做什么,并且会在所有正确的地方使用障碍。x86等其他平台保证某些指令将按顺序执行,而x86_64等其他平台则不保证其他指令的顺序,但在实践中,主要是出于理智和兼容性的原因,会按顺序执行它们(通常)(请参阅链接的博客文章)。