スレッド停止(シグナル状態)の検知
環境はBorland C++ Builder 5です。
超初心者な内容ですが、とりあえずメモっときます。
正しいかどうかは保証しないので
曖昧な表現で書いていますw
スレッドの停止を検知するには
WaitForSingleObjectという関数を使うらしい。
(複数スレッドの停止を検知するには
WaitForMultipleObjectsの方を)
オブジェクトの中身はこんな感じらしい。
DWORD WaitForSingleObject( HANDLE hHandle, // オブジェクトのハンドル DWORD dwMilliseconds // タイムアウト時間 );
パラメータは以下のように指定するのか、なるほど。
・オブジェクトのハンドル オブジェクトのハンドルを指定、そのままです。 ・タイムアウト時間 ミリ秒(ms):タイムアウト時間が経過すると制御が戻る。 0 :江戸っ子か関西人風に即座に制御を返すようです。 「せっかち」または「いらち」と呼ばれます。 INFINITE :片思いの恋愛のように永遠と待ち続けるようです。 なんだか胸が締め付けられる思いです。
戻り値は以下のどれかになるようです。
ちなみにスレッドが終了している状態=シグナル状態。
WAIT_ABANDONED:放棄されたMutexオブジェクトでした。 (あるスレッドが所有権を解放しないで終了) これ見て「商品の取り置き希望の客が ずーっと受け取りに来ない」 学生時代のバイト経験を 思い出したけどそんな感じでいいのか? WAIT_OBJECT_0 :指定したオブジェクトがシグナル状態になった! WAIT_TIMEOUT :タイムアウト時間が経過したけど まだシグナル状態じゃないよー、と。 WAIT_FAILED :関数自体の呼び出し失敗。残念。
実際のコードは…ないです。