C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 126 を表示中)
■74879 / )  Re[9]: ヘッダでスレッドセーフなシングルトン
□投稿者/ キム (45回)-(2015/02/05(Thu) 11:31:30)
No74876 (なちゃ さん) に返信

なちゃさんお返事ありがとうございます。

CPUのアウトオブオーダー実行やコンパイラの最適化によって予想外の動作が行われる可能性があるということでしょうか?

調べてみたら下記の記事を見つけました。

https://msdn.microsoft.com/ja-jp/library/bb310595(VS.85).aspx

この資料によると、
・x86アーキテクチャが読み込み同士や書き込み同士のリオーダーを行わない。
・Windows の Interlocked系のすべての関数には、完全なメモリーバリアが使用されている。
・Visual C++ 2005以降では、volatile 変数の読み取りには Read-Acquire バリア、書き込みには Write-Release バリアが適用される。
となっています。

そのため、スレッドセーフのその2( No74684 のコード)は、『Visual C++ 2005以降でビルドし、Windows上で実行する場合だけ
確実に動作する。それ以外の組み合わせでは、未定義の動作となる可能性がある。』ということでしょうか?

奥が深いですね。勉強になります。

#ごめんなさい、疑問点が出たので一旦解決を解除します。
返信 編集キー/


管理者用

- Child Tree -