C++でのシングルトン
C++では、本当にシングルトンを記述する方法が難しいです。
以下がよく、巷に出ているシングルトンの作成方法です。
class Singleton : private boost::noncopyable { public : static Singleton *instance(){ if (instance_ == NULL) { instance_ = new Singleton(); } return instance_; } private: Singleton(); static Singleton *instance_; };
さて、このシングルトン、問題があります。どんな時でしょうか?
ち、ち、ち、ぽーん!
はい。時間切れ。
正解は、生成時にinstance関数が複数スレッドから呼ばれるとシングルトンなのに
2つのオブジェクトが生成される可能性があるのでした。
最底辺なので、これを理解するのにどれだけ時間を要したか。
そして今も理解していない!!
やっぱ、プログラマ干されて当たり前ですな。
最近、偉そうに解説してすみません。なんか面白いネタ考えておきます。
ディスカッション
コメント一覧
まだ、コメントがありません