iOS/iPhone/iPad/watchOS/tvOS/MacOSX/Android プログラミング, Objective-C, Cocoa, Swiftなど
前回、Swiftでシングルトンの実装が楽になった件を発表したが、C++だとどうなるのか試してみた。
class Singleton {
Singleton* sharedInstance;
static mutex mtx;
static atomic flag_init;
Singleton* getInstance();
};
mutex Singleton::mtx;
atomic Singleton::flag_init {false};
Singleton* Singleton::getInstance()
{
if (! flag_init) {
mtx.lock();
if (! flag_init) {
sharedInstance = new Singleton();
flag_init = true;
}
mtx.unlock();
}
return sharedInstance;
}
もっと簡易に書ける機能があるようだが、基本はこうなるようだ。