0
スレッドはいつ終了するのですか?POSIXスレッドに関するトピック
SITUATION:メインプログラム-while
が完了するまで実行するスレッドを待つ必要があります。
- これは、pthread_joinというプロトタイプ関数を使用して行うことができます。
この関数を呼び出すと、スレッド自身がidを持つスレッドの終了を待ちます。
スレッドはいつ終了するのですか?POSIXスレッドに関するトピック
SITUATION:メインプログラム-while
が完了するまで実行するスレッドを待つ必要があります。
- これは、pthread_joinというプロトタイプ関数を使用して行うことができます。
この関数を呼び出すと、スレッド自身がidを持つスレッドの終了を待ちます。
pthread_join(ptherad_t &var)
を呼び出した後、メインとなるのは、参加を呼び出したすべてのスレッドが終了するまで待機します。
すべてのスレッドが完了したら、 を呼び出してpthread_exit(NULL)
メインを終了します。
タスクの完了後、pthread_exit(NULL)
に電話する必要があります。これはスレッドの実行を停止します。しかし、これは必須ではなく、スレッドは単にスレッドが完了したことを意味します。
(スレッド)がpthread_exit(NULL)
を呼び出すと、呼び出しスレッドが終了します。
私はそれを知っていました。複雑な回答がある場合は、 –
ありがとうございます。 –
これはあまり正しいことではありません。 "pthread_join()を呼び出した後、メインスレッドはすべてのスレッドが終了するまで待機します。" - pthread_joinには、接続するスレッドを識別するpthread_t引数が必要です。通常は、順番に作成したスレッドごとにpthread_joinを呼び出します。作成されたスレッドはpthread_exitを呼び出す必要はありません。単にpthread_createによって呼び出された関数からの復帰も機能しますが、pthread_exitを使用してpthread_joinに渡す 'void * '値を指定できます。他のオプションもあります。スレッドはexit()でプログラムを終了できますが、それらは常にクリーンアップしません。ファイル&共有memを正しく。 –