- 209 名前:デフォルトの名無しさん mailto:sage [04/12/29 01:40:28]
- 並行プログラミングでは、実際に動かしてみても正しいかどうかの判断がつかないから
試行錯誤なしで初めから論理的に正しいコードを書くのが重要になるんですよ。 wxのドキュメントは、posixないしwin32スレッドの知識があるのが前提で書かれているようですね。 www.opengroup.org/onlinepubs/007908799/xsh/pthread_cond_timedwait.html こことか読めば、wxCondition::Wait()がsignalを得て関数から戻るときに、 mutexを再び獲得する、というのがわかると思う。 つまり Thread::Entry(){ mutex->Lock(); while(!TestDestroy){ condition->Wait(); iroironakoto(); } } と書かなければいけない。 wxのドキュメントにもmustと書かれているとおり、mutexを獲得せずにwxCondition::Wait()を呼出すのは未定義の動作を引き起こします。 OnButton()の方のmutex lockは省略可能ですが。
|

|