スレッドセーフな二重チェック ロック (シングルトンまたは遅延初期化の場合) に関する多くの質問を読みました。一部のスレッドでは、答えはパターンが完全に壊れているというものであり、他のスレッドでは解決策を提案しています。
だから私の質問は: C++ で完全にスレッド セーフな二重チェック ロック パターンを記述する方法はありますか? もしそうなら、それはどのように見えますか。
それが物事をより簡単にするならば、C++11を仮定することができます。私の知る限り、C++11 はメモリ モデルを改善し、必要な改善をもたらすことができました。
ダブルチェックで保護された変数を揮発性にすることで、Javaでそれが可能であることを私は知っています。C++11 はメモリ モデルの大部分を Java のものから借りてきたので、それは可能だと思いますが、どうすればよいでしょうか?