08/06/08 05:09:09
>>746は無茶苦茶だろ。
とりあえず思ったこと。
・startで生成したhthreadを別のスレッドでcloseするのが変。
代入前にサブスレッドが終了したらアウチ
・startが2回呼び出されたときのガードは当然してるよな
・とりあえずcancel_はvolatileにしとけ。即座でなくても
そのうちtrueが伝わるだろう
・cancelは変数で一時停止がEventだが、どちらかに統一しとけ
・entrypointはprivateにしとけ
・entrypintでrunの例外処理しないとendthreadexが呼ばれない
・キャストはreinterpret_cast使え
・サブスレッドの実行を管理するThreadとサブスレッド処理のクラスを
どうして同じにするかな。runとcancel_checkはThreadと別クラスに分離した
方がよいと思う
・_beginthreadexとCreateEventのエラーチェックしろ
・サブスレッドが完了したか調べる関数がほしい
あと、Threadがスコープから抜けるとrunのthisが無効になる設計は嫌いだ。
Threadのデストラクタでjoin(WaitForSingleObject(hthread_))すべきだと思う。
呼び出し側が責任を持って事前にcancelを呼び出し、それを怠ったら
不正メモリアクセスでなく永久waitになった方がマシ