TLS(thread - local storage)線程局部存儲

     線程局部存儲是一個使用很方便的存儲線程局部數據的系統。利用TLS機制可以爲進程中所有的線程關聯若干數據,各個線程通過由TLS分配的全部索引來訪問與自己關聯的數據。這樣,每個線程都可以有線程局部的靜態存儲數據。

 

動態使用TLS的典型步驟如下:

(1)主線程調用TlsAlloc函數爲線程局部存儲分配索引,函數原形爲:

DWORD TlsAlloc( void );//返回一個TLS索引

TlsAlloc()返回的是數組成員的下標,初始狀態下,數組成員都是FREE狀態,TlsAlloc()會區找FREE狀態的數組成員,然後把它改爲INUSE,TLS返回該數組的索引。如果沒有找到FREE,就返回TLS_OUT_INDEXES。

 

(2)每個線程調用TlsSetValue和TlsGetValue設置或讀取線程數組中的值,函數原形爲:

BOOL TlsSetValue(DWORD  dwTlsIndex,   //TLS索引

             LPVOID    lpTlsValue    //要設置的值

                 );

LPVOID TlsGetValue(DWORD  dwTlsIndex);      //TLS索引

 

(3)主線程調用TlsFree釋放局部存儲索引。

 

 

 

 

GetTickCount函數是獲取Windows從啓動開始經過的時間,其返回值是以毫秒位單位的已啓動的時間。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章