tss_set
|
ヘッダーで定義
<threads.h>
|
||
|
int
tss_set
(
tss_t
tss_id,
void
*
val
)
;
|
(C11以降) | |
現在のスレッドに対して、
tss_id
で識別されるスレッド固有ストレージの値を
val
に設定します。異なるスレッドは同じキーに対して異なる値を設定することができます。
デストラクタが利用可能であっても、呼び出されません。
目次 |
パラメータ
| tss_id | - | スレッド固有ストレージキー。 tss_create から取得され、 tss_delete によって削除されない |
| val | - | スレッド固有ストレージに設定する値 |
戻り値
thrd_success 成功した場合、 thrd_error それ以外の場合。
注記
この関数のPOSIX相当は
pthread_setspecific
です。
通常、TSSは、呼び出しスレッドが使用するために確保された動的に割り当てられたメモリブロックへのポインタを格納するために使用されます。
tss_set
はTSSデストラクタ内で呼び出される可能性があります。デストラクタがTSSストレージに非NULLの値で終了した場合、
thrd_exit
によって最大
TSS_DTOR_ITERATIONS
回まで再試行され、その後ストレージは失われます。
例
|
このセクションは不完全です
理由:改善が必要、おそらくインスピレーションを得るためにPOSIXの例を参照 |
int thread_func(void *arg) { tss_t key; if (thrd_success == tss_create(&key, free)) { tss_set(key, malloc(4)); // TSSにポインタを格納 // ... } } // TSSに格納されたポインタに対してfree()を呼び出す
参考文献
- C17規格 (ISO/IEC 9899:2018):
-
- 7.26.6.4 tss_set関数 (p: 282-283)
- C11規格 (ISO/IEC 9899:2011):
-
- 7.26.6.4 tss_set関数 (p: 387)
関連項目
|
(C11)
|
スレッド固有ストレージから読み取り
(関数) |