tss_set
來自 cppreference.com
在標頭檔案 <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 解構函式中呼叫 tss_set
。如果解構函式以 TSS 儲存中非空值退出,它將被 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)); // stores a pointer on TSS // ... } } // calls free() for the pointer stored on TSS
[編輯] 參考
- 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) |
從執行緒區域性儲存讀取 (函式) |