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.

Do you laugh when the waiter drops a tray full of dishes? Unix weenies do. They're the first ones to laugh at hapless users, trying to figure out an error message that doesn't have anything to do with what they just typed.
— The Unix Haters' handbook