tss_create
From 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 | - | 新しいスレッドローカルストレージキーを格納するメモリ位置へのポインタ |
| デストラクタ | - | スレッド終了時に呼び出す関数へのポインタ |
[編集] 注記
この関数のPOSIX相当は、pthread_key_createです。
[編集] 戻り値
成功した場合は thrd_success、それ以外の場合は thrd_error。
[編集] 例
| このセクションは未完成です 理由: 改善、おそらくインスピレーションのためにPOSIXの例を探す |
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
[編集] 参考文献
- C17標準 (ISO/IEC 9899:2018)
- 7.26.6.1 The tss_create function (p: 281-282)
- C11標準 (ISO/IEC 9899:2011)
- 7.26.6.1 The tss_create function (p: 386)