class Hoge { public: static Hoge& shared() { static Hoge instance; return instance; } private: Hoge(); }
C++でシングルトンを作りたい場合は上記のようにすればよい。
C++11より前の仕様では、複数のスレッドからHoge::shared()を呼び出したときにstatic Hoge instanceの部分が2回実行されしまうというデータレースが発生していたが、C++11から1度しか実行されない仕様になった。
Concurrency in Action の第3章に書かれていました。
- 作者:Williams, Anthony
- 発売日: 2019/02/10
- メディア: ペーパーバック