PTHREAD_SETSPECIFIC(3)

名称
pthread_setspecific - スレッド固有のデータ値の設定

ライブラリ
libc_r

書式
#include <pthread.h> int pthread_setspecific(pthread_key_t key, const void *value)

解説
pthread_setspecific() 関数は、以前の pthread_key_create() の呼び出しを通して入手した key に、スレッド固有の値を関連付けます。 異なるスレッドは同じキーに対して異なる値を、結びつけることができます。 これらの値は、通常は呼び出しているスレッドによって既に予約されて、 動的に割り当てられたメモリブロックを指すポインタです。

pthread_key_create() から入手したのではない key の値を伴った、または pthread_key_delete() によって key が削除された後での、 pthread_setspecific() の呼び出しの結果は未定義です。

pthread_setspecific() はスレッド固有のデータのデストラクタ関数から呼び出されることがあります。 しかしながら、これは記憶領域を失ったり、 無限ループに陥ったりすることがあります。

戻り値
問題がない場合は、 pthread_setspecific() 関数は 0 を返します。 問題がある場合は、そのエラーを示すためにエラー番号が返されます。

エラー
pthread_setspecific() は以下の場合に失敗します。

[ENOMEM]
    key と関連付けるための値の十分なメモリがありません。

[EINVAL]
    key の値が無効です。

関連項目
pthread_getspecific(3), pthread_key_create(3), pthread_key_delete(3)

規格
pthread_setspecific() は p1003.1-96 に適合しています。