EN JA
PTHREAD_KEY_CREATE(3)
PTHREAD_KEY_CREATE(3) FreeBSD Library Functions Manual PTHREAD_KEY_CREATE(3)

名称

pthread_key_createスレッド特有のデータキーの作成

ライブラリ

POSIX Threads Library (libpthread, -lpthread)

書式

#include < pthread.h>

int
pthread_key_create( pthread_key_t *key, void (*destructor)(void *));

解説

pthread_key_create() 関数は、プロセス内のすべてのスレッドに見えるスレッド特有のデータキーを作成します。 pthread_key_create() によって提供されるキーの値は、スレッド特有のデータを位置付けるために使用される不透明な (サイズおよび形がわからない) オブジェクトです。同じキーの値は、異なるスレッドによって使用されますが、 pthread_setspecific() によってキーにバインドされた値は、前のスレッドを基本にして維持され、呼び出しているスレッドの存続期間存続します。

キーの作成において、値 NULL は、すべてのアクティブなスレッド中の新しいキーに関連付けられます。スレッドの作成において、値 NULL は、新しいスレッド中のすべての定義されたキーに関連付けられます。

オプションのデストラクタ関数は、各キーの値に関連付けられます。スレッドの終了時に、キーの値が NULL でないデストラクタのポインタがあり、スレッドがキーに関連付けられた NULL でない値があるなら、指されている関数は、その唯一の引数として現在関連付けられている値を付けて呼び出されます。デストラクタの呼び出しの順序は、終了時に、2 つ異常のデストラクタがスレッドに対して存在している場合、明記されていません。

デストラクタに関連付けられたすべての NULL でない値に対してすべてのデストラクタが呼び出された後に、デストラクタに関連付けられているいくつかの NULL でない値がまだあるなら、プロセスは、繰り返されます。未解決の NULL でない値に対してデストラクタの呼び出しのすくなくとも [PTHREAD_DESTRUCTOR_ITERATIONS] の繰り返しの後に、デストラクタに関連付けられているいくつかの NULL でない値がまだあるなら、実行は、デストラクタの呼び出しを停止します。

戻り値

成功したなら、 pthread_key_create() 関数は、新しく作成されたキーの値を key で指定された場所に格納し、0 を返します。そうでなければ、エラー番号がエラーを示すために返されます。

エラー

pthread_key_create() 関数は、次の場合に失敗します:
[ EAGAIN]
システムに別のスレッド特有のデータキーを作成するために必要なリソースが足りないか、またはシステムで強制されているプロセス毎のキーの合計の数の制限 [PTHREAD_KEYS_MAX] が超過しました。
[ ENOMEM]
キーを作成するために存在するメモリが不足しています。

規格

pthread_key_create() 関数は、 ISO/IEC 9945-1:1996 (“POSIX.1”) に適合しています。
April 4, 1996 FreeBSD