openpub のドキュメントで説明されているように、
pthread_exit()
それを呼び出したスレッドを終了します。
あなたの場合、メインがそれを呼び出すので、メイン thread 生成されたスレッドは引き続き実行されますが、終了します。これは主に、メイン スレッドがスレッドをスポーンし、スレッドにジョブを実行させるためだけに必要な場合に使用されます
pthread_join
ターゲットスレッドが終了しない限り、それを呼び出したスレッドの実行を中断します
これは、スレッドが終了するのを待ってからメイン スレッドで処理を進めたい場合に便利です。
どちらの方法でも、プロセスが保証されます すべてのスレッドが終了する前に終了しません。
join メソッドには main
のスレッドがあります 関数は、「結合」されるすべてのスレッドを明示的に待ちます。
pthread_exit
メソッドは main
を終了します 機能とスレッドを制御された方法で。 main
main
で終わるという特殊性があります。 そうしないと、他のすべてのスレッドを含むプロセス全体が終了します。
これが機能するには、スレッド内で宣言されているローカル変数を使用しているスレッドがないことを確認する必要があります main
関数。この方法の利点は、 main
プロセスで開始されたすべてのスレッドを知る必要はありません。たとえば、他のスレッドが main
という新しいスレッドを作成したためです。 について何も知りません。
pthread_exit
pthread_join
の間、呼び出しスレッドを終了します ターゲットスレッドが実行を完了するまで、呼び出しスレッドの実行を中断します。
これらは、オープン グループのドキュメントで詳細に説明されています:
- pthread_exit
- pthread_join