tail head cat sleep
QR code linking to this page

manページ  — PTHREAD_KEY_CREATE

名称

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

内容

ライブラリ

Reentrant C\~Library (libc_r, -lc_r)

書式

#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()IEEE Std 1003.1-96 ("POSIX.1") に適合しています。

PTHREAD_KEY_CREATE (3) April 4, 1996

tail head cat sleep
QR code linking to this page


このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.