PTHREAD_EXIT(3)

名称
pthread_exit - 呼び出しているスレッドの終了

ライブラリ
libc_r

書式
<pthread.h> void pthread_exit(void *value_ptr)

解説
pthread_exit() 関数は、呼び出しているスレッドを終了し、 終了するスレッドと成功裏に待ち受けするために value_ptr の値を利用可能にします。 既にスタックに積まれていて取り出されていない取り消しクリーンアップハンドラは、 積まれたのと逆の順序で取り出され、実行されます。 全ての取り消しハンドラが実行された後で、スレッドがそのスレッド固有のデータを 持っている場合には、適切なデストラクタ関数が順序不定で呼び出されます。 スレッドの終了は、アプリケーションから見える全てのプロセスリソースを 解放しません。 このリソースは、mutex およびファイル記述子を含みますが、これに限りません。 また、あらゆるプロセスレベルのクリーンアップの実行も行ないません。 このクリーンアップは、存在する可能性のある atexit() ルーチンの呼び出しを含みますが、これに限りません。

main() を最初に実行したスレッド以外のスレッドが、その作成に使用された 開始ルーチンから戻った時に、暗黙的に pthread_exit() が呼び出されます。 関数の戻り値は、スレッドの終了ステータスとして使用されます。

暗黙的なまたは明示的な pthread_exit() の呼び出しの結果として実行された取り消しハンドラまたはデストラクタ関数から 呼び出された場合の、 pthread_exit() の動作は未定義です。

スレッドが終了した後での、そのスレッドのローカル (auto) 変数へのアクセスの 結果は未定義です。 従って、終了するスレッドのローカル変数への参照は、 pthread_exit() の value_ptr パラメータの値に使用されるべきではありません。

最後のスレッドが終了した後で、プロセスは終了ステータス 0 で終了します。 スレッド終了時に実装が引数 0 で exit() を呼び出したかのように動作します。

戻り値
pthread_exit() 関数は呼び出し側には戻れません。

エラー
ありません。

関連項目
_exit(2), exit(3), pthread_create(3), pthread_join(3)

規格
pthread_exit() は p1003.1-96 に適合しています。