スポンサーリンク

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

スポンサーリンク