Posted on 2009-07-05 12:53
Prayer 閱讀(762)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
LINUX/UNIX/AIX
這個(gè)概念對(duì)我來(lái)說(shuō)比較新穎。
posix實(shí)現(xiàn)涉及函數(shù):(TSD,thread-specific data)
pthread_once_t once = PTHREAD_ONCE_INIT
確保init參數(shù)所指函數(shù)在進(jìn)程范圍內(nèi)只被調(diào)用一次
int pthread_once(pthread_once_t *onceptr, void(*init)(void) );
pthread_key_t g_key;
int pthread_key_create( pthread_key_t *keyptr, void(*destructor)(void*value));
int pthread_key_delete(pthread_key_t key);
int pthread_setspecific(pthread_key_t key, const void *pointer)
void * pthread_getspecific(pthread_key_t key)
==============================================================
windows實(shí)現(xiàn)涉及函數(shù):
TLS(thread local storage) API:TlsAlloc、TlsGetValue、TlsSetValue、TlsFree
TlsAlloc
函數(shù)功能:分配一個(gè)線程局部存儲(chǔ)(TLS)索引。該進(jìn)程的任何線程都可以使用該索引來(lái)存儲(chǔ)和檢取線程中的值。
函數(shù)原型:DWORD TlsAlloc(void)
參數(shù):無(wú)。
返回值:若函數(shù)成功,則返回值為一個(gè)TLS索引。失敗則返回0XFFFFFFFF。
TlsGetValue
函數(shù)功能:檢取調(diào)用線程的線程局部存儲(chǔ)(TLS)槽的值。對(duì)于每個(gè)TLS索引,進(jìn)程的每個(gè)線程都有它自己的槽。
函數(shù)原型:LPVOID TlsGetValue(DWORD dwTlsIndex)
參數(shù):
dwTlsIndex:由TlsAlloc分配的索引。
返回值:若函數(shù)成功,則返回調(diào)用線程的TLS槽中的值;失敗則返回0。注意,存放在TLS槽中值可以為0,在這種情況下GetLastError返回NO_ERROR。
TlsSetValue
函數(shù)功能:存儲(chǔ)調(diào)用線程的線程局部存儲(chǔ)(TLS)槽的值。
函數(shù)原型:BOOL TlsSetValue(DWORD dwTlsIndex, LPVOID lpTlsValue)
參數(shù):
dwTlsIndex:由TlsAlloc分配的索引。
lpTlsValue:調(diào)用線程的線程局部存儲(chǔ)(TLS)槽的值。
返回值:若函數(shù)成功,則返回值不為0;失敗則返回0。
TlsFree
函數(shù)功能:釋放調(diào)用線程局部存儲(chǔ)(TLS)索引。
函數(shù)原型:BOOL TlsFree(DWORD dwTlsIndex)
參數(shù):
dwTlsIndex:由TlsAlloc分配的索引。
返回值:若函數(shù)成功,則返回值不為0;失敗則返回0。