Objective-Cではマルチスレッドでも安全にsingleton objectを初期化するための dispatch_once() というのが使えるようだけど、double-checked lockingは多少効果があるようだ。 ただ最近の gcc/clangはデフォルトで -fthreadsafe-statics が有効なので Objective C++ だと dispatch_once() すら使うことなく安全に初期化できるはずで、無用なhackかもしれない。要検証。 #import <ctime> #import <Foundation/Foundation.h> // simple ver. NSString* getInstance1() { static dispatch_once_t guard; static NSString* instance = nil; dispa