マルチスレッドプログラミング相談室
■ このスレッドは過去ログ倉庫に格納されています
0448デフォルトの名無しさん
NGNGそのコードだとGをvolatile宣言する必要はナシ。
そもそも、volatile宣言された変数へのアクセスって
意外とコスト高なんで注意すべし。
ちなみに>>444のアルゴリズムはDouble-Checked Lockingと
呼ばれているんだが、場合によってはうまく動かないことが
知られている。
具体的には、初期化の対象がatomicなアクセスが保証されている
primitive型の変数ではなく、緩いメモリモデルを採用している
プラットホーム上で動かした場合に、うまく動かない可能性がある。
緩いメモリモデルの例としてはJava memory modelとかがあるから
参考として以下の記事なんかを読んでおくのもいいよ。
http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html
■ このスレッドは過去ログ倉庫に格納されています