メソッド内で宣言された静的変数はスレッドセーフではないことを読んだことを覚えています。(Todd Gardnerが述べたように、Meyerのシングルトンはどうですか?を参照してください)
Dog* MyClass::BadMethod()
{
static Dog dog("Lassie");
return &dog;
}
私のライブラリは、エンドユーザーがアプリケーションの一部としてコンパイルするためのC++コードを生成します。生成されるコードは、スレッドセーフなクロスプラットフォーム方式で静的変数を初期化する必要があります。変数の初期化をミューテックスするために使用したいboost::call_once
のですが、エンドユーザーはBoostの依存関係にさらされています。
エンドユーザーに余分な依存関係を強いることなくこれを行う方法はありますか?