pthread_exit サブルーチン

目的

コール側のスレッドを終了します。

ライブラリー

スレッド・ライブラリー (libpthreads.a)

構文

#include <pthread.h>

void pthread_exit (status)
void *status;

説明

pthread_exit サブルーチンは、コール側のスレッドを安全に終了し、コール側のスレッドに参加する可能性のあるすべてのスレッドの終了状況を保管します。 終了状況は常に void ポインターです。どのような種類のデータでも参照できます。 キャストは移植できない可能性があるため、このポインターをスカラー・データ・タイプ (例えば、int ) にキャストすることは推奨されません。 このサブルーチンは戻ることはありません。

exit サブルーチンとは異なり、 pthread_exit サブルーチンはファイルをクローズしません。 したがって、このサブルーチンを呼び出す前に、呼び出しスレッドによってのみオープンされ、使用されるファイルをクローズする必要があります。 また、 pthread_exit サブルーチンは、スレッドのスタックを含むすべてのスレッド固有データを解放することにも注意してください。 スタックが解放され、対応するメモリーが別のスレッドによって再使用される可能性があるため、スタックに割り振られたデータは無効になります。 したがって、 スレッドのスタック上に割り当てられたスレッド同期オブジェクト (mutex と条件変数) は、 スレッドが pthread_exit サブルーチンを呼び出す前に破棄する必要があります。

スレッドの初期ルーチンから戻ると、戻り値をパラメーターとして使用して、暗黙的に pthread_exit サブルーチンが呼び出されます。

スレッドが切り離されない場合、スレッド ID、終了状況、スレッド固有データ、およびそのストレージを含むそのリソースはすべて、スレッドが切り離されるかプロセスが終了するまで維持されます。

別のスレッドが呼び出し側スレッドに結合すると、そのスレッドは即時にウェイクアップし、呼び出し側スレッドは自動的に切り離されます。

スレッドが切り離されると、クリーンアップ・ルーチンはスタックからポップされ、実行されます。 次に、スレッド固有のデータからデストラクター・ルーチンが実行されます。 最後に、スレッドのストレージが再利用され、その ID が再利用のために解放されます。

このサブルーチンを呼び出して初期スレッドを終了しても、プロセスは終了せず、単に初期スレッドが終了します。 ただし、プロセス内のすべてのスレッドが終了すると、最後のスレッドが切り離された場合は戻りコード 0、それ以外の場合は 1 で exit サブルーチンを暗黙的に呼び出すことによって、プロセスは終了します。

注: pthread.h ヘッダー・ファイルは、スレッド・ライブラリーを使用する各ソース・ファイルの最初の組み込みファイルでなければなりません。 それ以外の場合は、 -D_THREAD_SAFE コンパイル・フラグを使用するか、cc_r コンパイラーを使用する必要があります。 この場合、フラグは自動的に設定されます。

パラメーター

項目 説明
status スレッドの結合によって使用される、オプションの終了状況を指します。 終了状況が必要ない場合は、その値を NULLにする必要があります。

戻り値

pthread_exit 関数は、その呼び出し元に戻ることができません。

エラー

エラーは定義されません。

pthread_exit 関数は、エラー・コード EINTR を戻しません。