?
Dokumen ini menggunakan Manual laman web PHP Cina Lepaskan
在頭文件<threads.h>中定義 | ||
---|---|---|
void tss_delete(tss_t tss_id); | (自C11以來) |
銷毀由 tss_id 標(biāo)識的線程專有存儲。
析構(gòu)函數(shù)(如果有被tss_create注冊)不會被調(diào)用(它們只在線程退出時被thrd_exit或從線程函數(shù)返回時調(diào)用),程序員有責(zé)任確保每個線程知道在調(diào)用tss_delete之前,tss_id執(zhí)行了所有必要的清理。
如果在另一個線程正在執(zhí)行tss_id的析構(gòu)函數(shù)時調(diào)用tss_delete,則不會指定是否更改對相關(guān)析構(gòu)函數(shù)的調(diào)用次數(shù)。
如果在調(diào)用線程正在執(zhí)行析構(gòu)函數(shù)時調(diào)用tss_delete,則與該線程關(guān)聯(lián)的析構(gòu)函數(shù)將不會再次執(zhí)行。
tss_id | - | 先前由tss_create返回且尚未由tss_delete刪除的線程專用存儲鍵 |
---|
(無).
這個函數(shù)的POSIX等價(jià)物是pthread_key_delete。
tss_delete永遠(yuǎn)不會調(diào)用析構(gòu)函數(shù)的原因是析構(gòu)函數(shù)(在線程退出時調(diào)用)通常是由同一個線程執(zhí)行的,該線程最初設(shè)置了析構(gòu)函數(shù)將要處理的值(通過tss_set),甚至可能依賴于值 該線程看到的那個或其他線程特定的數(shù)據(jù)。 執(zhí)行tss_delete的線程無法訪問其他線程的TSS。 即使可以為與tss_id相關(guān)的每個線程自己的值調(diào)用析構(gòu)函數(shù),tss_delete也必須與每個線程同步,以便檢查該線程中此TSS的值是否為空(析構(gòu)函數(shù)僅針對非null值)。
C11標(biāo)準(zhǔn)(ISO / IEC 9899:2011):
7.26.6.2 tss_delete函數(shù)(p:386)