PTHREAD_KEY_CREATE(3) FreeBSD ライブラリ関数マニュアル PTHREAD_KEY_CREATE(3)
名称
pthread_key_create − スレッド固有のデータキーの作成 |
ライブラリ
Reentrant C Library (libc_r, −pthread) |
書式
#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 でない値を持っている場合には、現在 関連付けられている値を唯一の引数として、指されている関数が呼び出されま す。スレッドの終了時にそのスレッドのための 1 つ以上のデストラクタ関数が存 在する場合には、デストラクタの呼び出しの順序は未規定です。 デストラクタに関連付けられた全ての NULL でない値のために、全てのデストラ クタが呼び出された後で、まだ幾つかの関連付けられたデストラクタを持つ NULL でない値がある場合には、その過程が繰り返されます。最低でも [PTHREAD_DESTRUCTOR_ITERATIONS] 回のデストラクタの呼び出しの繰り返しの後 で、まだなお幾つかの関連付けられたデストラクタを持つ NULL でない値がある 場合には、実装はデストラクタの呼び出しを中止します。 |
戻り値
問題がない場合は、 pthread_key_create() 関数は、新しく作成されたキーの値 を key で指定された場所に格納し、0 を返します。問題がある場合は、そのエ ラーを示すためにエラー番号が返されます。 |
エラー
pthread_key_create() は以下の場合に失敗します。 |
[EAGAIN]
別のスレッド固有のデータキーを作成するために必要なリ ソースがシステムに不足しています。または、1 つのプロセ スごとのキーの総数についてのシステムの制限 [PTHREAD_KEYS_MAX] を超過しました。 [ENOMEM] 関連項目 |
pthread_getspecific(3), pthread_key_delete(3), pthread_setspecific(3) |
規格
pthread_key_create() は ISO/IEC 9945-1:1996 (‘‘POSIX.1’’) に適合していま す。 FreeBSD 10.0 April 4, 1996 FreeBSD 10.0 |