pthread_once サブルーチン

目的

プロセス内で 1 回だけルーチンを実行します。

ライブラリー

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

構文

#include <pthread.h>

int pthread_once (once_control, init_routine)
pthread_once_t *once_control;
void (*init_routine)(void);
, 
pthread_once_t once_control = PTHREAD_ONCE_INIT;

説明

pthread_once サブルーチンは、プロセス内で 1 回だけルーチン init_routine を実行します。 プロセス内の任意のスレッドによるこのサブルーチンへの最初の呼び出しでは、パラメーターなしで、指定されたルーチンが実行されます。 後続の呼び出しは影響を与えません。

init_routine ルーチンは通常、初期化ルーチンです。 複数の初期化は、 pthread_once_t 構造の複数のインスタンスによって処理することができます。 このサブルーチンは、多数のスレッドの中で 1 つのスレッドによって固有の初期化を行う必要がある場合に役立ちます。 同期要件が軽減されます。

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

パラメーター

項目 説明
once_control (once_control) 同期制御構造を指します。 この構造は、静的初期化指定子マクロ PTHREAD_ONCE_INITによって初期化する必要があります。
初期化ルーチン 実行するルーチンを指します。

戻り値

正常終了すると、 pthread_once はゼロを戻します。 正常に実行されなかった場合、エラーを示すエラー番号を戻します。

エラー・コード

エラーは定義されません。 pthread_once 関数は、エラー・コード EINTR を戻しません。