pthread_key_create()
関数は、プロセス内の全てのスレッドに可視のスレッド固有のデータキーを
作成します。
pthread_key_create()
によって提供されたキーの値は、スレッド固有のデータの位置を示すために
使用される不透明なオブジェクトです。
別のスレッドによって同じキー値が使用されることが可能ですが、
pthread_setspecific()
によってキーに結びつけられた値はスレッド毎を基準に保守され、
呼び出しているスレッドが生きている間存続します。
キーの作成時には、全てのアクティブなスレッド内の新しいキーに、値 NULL が
関連付けられます。
スレッドの作成時には、新しいスレッド内の全ての定義済のキーに、値 NULL が
関連付けられます。
任意のデストラクタ関数は、個々のキーの値と関連付けられることができます。
スレッドの終了時に、キー値が NULL でないデストラクタのポインタを持ち、
かつスレッドがキーに関連付けられた NULL でない値を持っている場合には、
現在関連付けられている値を唯一の引数として、指されている関数が呼び出されます。
スレッドの終了時にそのスレッドのための 1 つ以上のデストラクタ関数が
存在する場合には、デストラクタの呼び出しの順序は未規定です。
デストラクタに関連付けられた全ての NULL でない値のために、全ての
デストラクタが呼び出された後で、まだ幾つかの関連付けられたデストラクタを
持つ NULL でない値がある場合には、その過程が繰り返されます。
最低でも [PTHREAD_DESTRUCTOR_ITERATIONS] 回のデストラクタの呼び出しの
繰り返しの後で、まだなお幾つかの関連付けられたデストラクタを
持つ NULL でない値がある場合には、実装はデストラクタの呼び出しを中止します。