?
This document uses PHP Chinese website manual Release
在頭文件<threads.h>中定義 | ||
---|---|---|
int tss_create(tss_t * tss_key,tss_dtor_t析構(gòu)函數(shù)); | (自C11以來) |
創(chuàng)建新的線程專有存儲密鑰并將其存儲在tss_key指向的對象中。 盡管不同線程可能使用相同的鍵值,但由tss_set綁定到鍵的值將以每個線程為基礎(chǔ)進行維護,并在調(diào)用線程的整個生命周期內(nèi)保持不變。
值NULL與所有現(xiàn)有線程中新創(chuàng)建的鍵相關(guān)聯(lián),創(chuàng)建線程后,與所有TSS鍵相關(guān)的值將初始化為NULL。
如果析構(gòu)函數(shù)不是空指針,那么還會關(guān)聯(lián)由thrd_exit(但不是由tss_delete而不是在程序終止處通過退出)釋放存儲器時調(diào)用的析構(gòu)函數(shù)。
從特定于線程的存儲析構(gòu)函數(shù)調(diào)用tss_create會導(dǎo)致未定義的行為。
tss_key | - | 指向內(nèi)存位置的指針以存儲新的線程專用存儲鍵 |
---|---|---|
destructor | - | 指向在線程退出時調(diào)用的函數(shù)的指針 |
此函數(shù)的POSIX等價物是pthread_key_create。
如果成功則返回 thrd_success,否則返回 thrd_error。
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
C11標準(ISO / IEC 9899:2011):
7.26.6.1 tss_create函數(shù)(p:386)