名稱空間
變體
操作

tss_set

來自 cppreference.com
< c‎ | thread
在標頭檔案 <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 次,之後儲存將丟失。

[編輯] 示例

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)

[編輯] 另請參閱

從執行緒區域性儲存讀取
(函式) [編輯]