マルチスレッドのプログラミング

スレッド固有データキーの削除

pthread_key_delete(3T)

pthread_key_delete(3T) は、既存のスレッド固有データキーを削除します。キーに関連付けられているどのメモリーも解放できます。これはキーが無効で、参照されるとエラーが戻されるためです。Solaris スレッドには、これに相当する関数はありません。


プロトタイプ:
int	pthread_key_delete(pthread_key_t key);

#include <pthread.h>

pthread_key_t key;
int ret;

/* 前に作成されたキー */
ret = pthread_key_delete(key); 

キーが削除された後、pthread_setspecific() または pthread_getspecific() 呼び出しでそのキーが参照されると、EINVAL エラーが戻されます。

削除関数を呼び出す前にスレッド固有のリソースを解放するのは、プログラマの責任です。この関数はデストラクタ関数をいっさい呼び出しません。

戻り値

正常終了時は 0 です。それ以外の戻り値は、エラーが発生したことを示します。以下の条件が検出されると pthread_key_create() は失敗し、対応する値を返します。


EINVAL

key の値が有効ではありません。