3

_ReadBarrier()が呼び出されないためにバグがあるサンプルプログラムは何ですか?

_ReadBarrier()に関するMSDNの記事:http://msdn.microsoft.com/en-us/library/z055s48f(v = vs.120) .aspx

4

1 に答える 1

1

私のお気に入りのブロガーによるこの投稿では、読み書きの障壁についてこれまでに経験したことすべてを説明します。障壁(そして非常にユーモラスで冗談っぽい方法でも)

この記事はかなり長く、同期の基本(ミューテックス)から始まり、さまざまな軽量の同期方法についてさらに深く掘り下げ、障壁について詳しく説明します。奇妙な振る舞い(およびCPUの振る舞いのために、この振る舞いを最近のマシンで明らかにすることの難しさ)を含め、あらゆる段階でサンプルプログラムがあります。


ところで、(ハンスのコメントを参照するために)Itaniumが同期のバグを経験するだけでなく、開発者/コンパイラが自分が何をしているかを知っているという前提の下で、Itaniumは完全な並べ替えと並列化を最大限に活用するように設計されていますそして、すべての適切な場所でバリアを使用しているでしょう。x86のような他のプラットフォームは、特定の命令が順番に実行されることを保証しますが、x86_64のような他のプラットフォームは、他の命令の順序を保証しませんが、実際には、主に健全性と互換性の理由から、それらを(通常は)順番に実行します(リンクされたブログ投稿を参照してください)。

于 2012-03-31T06:47:51.650 に答える