> 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秒