GNU/Linux >> Linux の 問題 >  >> Linux

Linuxでいつpthread_exit()を使用し、いつpthread_join()を使用するのですか?

openpub のドキュメントで説明されているように、

pthread_exit() それを呼び出したスレッドを終了します。

あなたの場合、メインがそれを呼び出すので、メイン thread 生成されたスレッドは引き続き実行されますが、終了します。これは主に、メイン スレッドがスレッドをスポーンし、スレッドにジョブを実行させるためだけに必要な場合に使用されます

pthread_join ターゲットスレッドが終了しない限り、それを呼び出したスレッドの実行を中断します

これは、スレッドが終了するのを待ってからメイン スレッドで処理を進めたい場合に便利です。


どちらの方法でも、プロセスが保証されます すべてのスレッドが終了する前に終了しません。

join メソッドには main のスレッドがあります 関数は、「結合」されるすべてのスレッドを明示的に待ちます。

pthread_exit メソッドは main を終了します 機能とスレッドを制御された方法で。 main main で終わるという特殊性があります。 そうしないと、他のすべてのスレッドを含むプロセス全体が終了します。

これが機能するには、スレッド内で宣言されているローカル変数を使用しているスレッドがないことを確認する必要があります main 関数。この方法の利点は、 main プロセスで開始されたすべてのスレッドを知る必要はありません。たとえば、他のスレッドが main という新しいスレッドを作成したためです。 について何も知りません。


pthread_exit pthread_join の間、呼び出しスレッドを終了します ターゲットスレッドが実行を完了するまで、呼び出しスレッドの実行を中断します。

これらは、オープン グループのドキュメントで詳細に説明されています:

  • pthread_exit
  • pthread_join

Linux
  1. LinuxでのChownコマンドとは何ですか?その使用方法

  2. LinuxでTracerouteをインストールして使用する方法

  3. Linux –なぜSuだけでなくSuを使用するのですか?

  1. Linux上のアンチウイルス:実際に使用する必要がありますか?使用する場合、いつ必要ですか?

  2. LinuxでFlatpakをインストールして使用する方法

  3. Windows と Linux の両方を使用する場合、どのファイルシステムを使用すればよいですか?

  1. KaliLinuxにtelnetをインストールして使用する方法

  2. Linux Screenをインストールして使用する方法は?

  3. Linuxテールコマンド:それは何であり、それを使用する方法