Pebble Coding

ソフトウェアエンジニアによるIT技術、数学の備忘録

C++11 シングルトン

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章に書かれていました。

C++ Concurrency in Action

C++ Concurrency in Action