tss_create
提供: cppreference.com
ヘッダ <threads.h> で定義 | ||
int tss_create(tss_t* tss_key, tss_dtor_t destructor ); | (C11以上) | |
新しいスレッドローカルストレージのキーを作成し、それを tss_key
の指すオブジェクトに格納します。 異なるスレッドで同じキー値を使用することができますが、 tss_set によってキーに束縛される値は、スレッドごとに管理され、呼び出し元スレッドの生存期間の間、存続します。
すべての既存のスレッドにおいて、新たに作成されたキーには値 NULL が紐付けられます。 スレッド作成時、すべての TSS キーに紐付けられた値は NULL に初期化されます。
destructor
がヌルポインタでなければ、ストレージが thrd_exit によって解放されるときに呼ばれる (しかし tss_delete や exit では呼ばれない) デストラクタが紐付けられます。
スレッドローカルストレージのデストラクタから tss_create
を呼ぶことは未定義動作です。
目次 |
[編集]引数
tss_key | - | 新しいスレッドローカルストレージのキーを格納するメモリ位置を指すポインタ |
destructor | - | スレッド終了時に呼ばれる関数を指すポインタ |
[編集]ノート
この関数と同等な POSIX の関数は pthread_key_create です。
[編集]戻り値
成功した場合は thrd_success、そうでなければ thrd_error。
[編集]例
This section is incomplete Reason: improve, perhaps look for POSIX examples for inspiration |
int thread_func(void*arg){tss_t key;if(thrd_success== tss_create(&key, free)){tss_set(key, malloc(4));// stores a pointer on TSS// ...}}// calls free() for the pointer stored on TSS
[編集]参考文献
- C11 standard (ISO/IEC 9899:2011):
- 7.26.6.1 The tss_create function (p: 386)