動作中のスレッド

[戻る]
初心者8号 2002/09/06(金) 11:46:32
お世話になっております。

現在、メインプログラムが生成した複数のスレッドが走るプログラムを作成しておりま
す。

メインプログラムはいま実行しているスレッドが全部終了したのを確認して
次のステップに行きたいのですが、スレッドの終了情報を知る良い手段が
なかなか思いつきません。排他制御を使わないとだめでしょうか?
排他制御を使わないような、良い案を頂ければ助かります。

/////////////
一応考えたことは
1.変数をいくつも用意して、スレッドの終了でフラグをたてる
全部の変数に終了フラグがたっていればスレッドは全部終わった。
(変数が多すぎて見るに耐えないので却下)

2.1つの変数に、桁別で各スレッドに対応した2進数でスレッドの終了フラグを立ててい
く。
例:変数A:000000にスレッド1が終了したら100000とANDを取って
変数Aが111111になったら全スレッドは終了したと判断する。
(排他制御を使わないと無理なのであまり好ましくない)

排他制御を使いたくない理由は処理が複雑になるからです。
使用せずにロジックでカバーできるようならそのほうがベストなので・・・・

初心者8号 2002/09/06(金) 11:48:21
環境は
言語::VC++6.0 SP5
OS::WINXp

です。よろしくお願いします。

dairygoods 2002/09/06(金) 13:08:28
スレッドハンドル hThread に対して次の式がtrueであれば、
スレッドが終了しています。

::WaitForSingleObject(hThread, 0) == WAIT_TIMEOUT

渡り鳥 2002/09/06(金) 13:12:42
多分...
WaitForSingleObject("スレッドのハンドル",INFINITE)
こんなかんじで指定したスレッドが終了するまで待機します.

初心者8号 2002/09/06(金) 14:20:12
[[解決]]
WaitForSingleObjectを使えばよかったんですね〜

お二方共、どうもありがとうございました(^_^)

古いスレッドには追加発言できません。