• ベストアンサー

スレッド終了について

複数のスレッドをbeginthreadで起動し、どれか1つでもスレッドが終了したら他のスレッドを終了させるというプログラムを組みたいのですが、どこかにそのようなサンプルありませんでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • xcrOSgS2wY
  • ベストアンサー率50% (1006/1985)
回答No.1

実行環境やコンパイラが何か分かりませんが、仮にWindows環境でMicrosoft Cのランタイムライブラリにある_beginthreadを使うのだとすれば 1. 各スレッドで共通して参照するフラグを用意する。 2. 各スレッドの処理の中で、終了直前にフラグを立てる。 3. 各スレッドの処理の中で、フラグの状態を常にチェックし、フラグが立っていたら直ちに終了する。 のような実装を行うことで、各スレッドのうちどれか1つが終了したとき、他のスレッドが終了します。 3.の処理(フラグの状態を常にチェックする)のように各スレッドが自発的に終了するのではなく他のスレッドから強制的に終了させる方法は、Cランタイムライブラリの範囲にはありません。Win32 APIを使用すれば可能ですが、そうするとCランタイムライブラリの内部動作に不整合が発生しその後の動作が異常となる可能性があります。

poohpiglet2
質問者

お礼

ご回答ありがとうございます。 各スレッドで共通して参照するフラグというのは、 グローバル変数でよいのでしょうか?

その他の回答 (1)

  • xcrOSgS2wY
  • ベストアンサー率50% (1006/1985)
回答No.2

グローバル変数でも良いです。

関連するQ&A