名稱空間
變體
操作

tss_delete

來自 cppreference.com
< c‎ | thread
在標頭檔案 <threads.h> 中定義
void tss_delete( tss_t tss_id );
(C11 起)

銷燬由 tss_id 標識的執行緒區域性儲存。

如果透過 tss_create 註冊了解構函式,則不會呼叫它(它們只在執行緒退出時呼叫,透過 thrd_exit 或從執行緒函式返回時),在呼叫 tss_delete 之前,程式設計師有責任確保知道 tss_id 的每個執行緒都執行了所有必要的清理。

如果在另一個執行緒正在為 tss_id 執行解構函式時呼叫了 tss_delete,則這是否會改變關聯解構函式的呼叫次數是未指定的。

如果在呼叫執行緒正在執行解構函式時呼叫了 tss_delete,則與 tss_id 關聯的解構函式將不會在此執行緒上再次執行。

目錄

[編輯] 引數

tss_id - 之前由 tss_create 返回且尚未被 tss_delete 刪除的執行緒區域性儲存鍵

[編輯] 返回值

(無)

[編輯] 注意

此函式的 POSIX 等效項是 pthread_key_delete

tss_delete 從不呼叫解構函式的原因是,解構函式(線上程退出時呼叫)通常旨在由最初設定解構函式將要處理的值(透過 tss_set)的同一執行緒執行,並且甚至可能依賴於該執行緒看到的該執行緒區域性資料或其他執行緒區域性資料的值。執行 tss_delete 的執行緒無權訪問其他執行緒的 TSS。即使可以為每個執行緒與 tss_id 關聯的自身值呼叫解構函式,tss_delete 也必須與每個執行緒同步,即使只是為了檢查該執行緒中此 TSS 的值是否為 null(解構函式只對非 null 值呼叫)。

[編輯] 示例

[編輯] 參考

  • C17 標準 (ISO/IEC 9899:2018)
  • 7.26.6.2 tss_delete 函式 (p: 282)
  • C11 標準 (ISO/IEC 9899:2011)
  • 7.26.6.2 tss_delete 函式 (p: 386)