>  2005/02/27 (日) 09:15:49        [mirai]
> > Keyboard* Keyboard::Instance() {
> > // 別スレッドもInstance()を呼んだ
> > // まだなにもしていない
> >     if (pInstance == 0) {
> > // ここで別スレッドがLock L(args);した
> >         Lock L(args); // 失敗:すでにロックされている
> > // まだpInstanceが0のまま
> >         if (pInstance == 0) { // 0なので真
> > // ここで別スレッドがpInstanceに代入
> >             pInstance = new Keyboard; // 上書き!
> >         }
> >     }
> >     return pInstance;
> > }
> > でいいのか(´ー`)
> マルチスレッド使うときってどういう設計すりゃいいんだろう(´ー`)難しそう

C++とかだと最適化すると死ぬ時あるね
ライブラリに頼るのが一番だと思う

参考:2005/02/27(日)09時14分31秒