動作中のスレッド – プログラミング – Home

通知
すべてクリア

[解決済] 動作中のスレッド


初心者8号
 初心者8号
(@初心者8号)
ゲスト
結合: 23年前
投稿: 23
Topic starter  

お世話になっております。

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

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

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

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

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


引用未解決
トピックタグ
初心者8号
 初心者8号
(@初心者8号)
ゲスト
結合: 23年前
投稿: 23
Topic starter  

環境は
言語::VC++6.0 SP5
OS::WINXp

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


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 24年前
投稿: 1421
 

スレッドハンドル hThread に対して次の式がtrueであれば、
スレッドが終了しています。

::WaitForSingleObject(hThread, 0) == WAIT_TIMEOUT


返信引用
渡り鳥
 渡り鳥
(@渡り鳥)
ゲスト
結合: 24年前
投稿: 14
 

多分...
WaitForSingleObject(スレッドのハンドル,INFINITE)
こんなかんじで指定したスレッドが終了するまで待機します.


返信引用
初心者8号
 初心者8号
(@初心者8号)
ゲスト
結合: 23年前
投稿: 23
Topic starter  

WaitForSingleObjectを使えばよかったんですね~

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


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました