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