次のようなプロパティがあります。
private:
Foo* myFoo_m;
public:
Foo getMyFoo() const
{
if (myFoo_m == NULL)
{
myFoo_m = new Foo();
// perform initialization
これはシングルスレッド環境ではうまく機能しますが、マルチスレッド環境ではどのように処理すればよいでしょうか? 私が見つけた情報のほとんどは静的シングルトンを扱っていますが、この場合、myFoo はパブリック インスタンス プロパティです。
これを C# (Lazy を使用できる) と Java (ダブル チェック ロックを使用できる) から移植していますが、C++ でこれを行う簡単な方法はないようです。外部ライブラリ (BOOST なし) に頼ることはできません。これは Windows と Linux で動作する必要があります。C++11も使えません。
どんな洞察でも良いでしょう。私はC++が初めてです。