天天看點

線程局部存儲(TLS)的使用

将線程的私有資料(局部存儲的資料)共享,以供本程序中的其它線程使用。

l 适用情形:

線程局部存儲适用于多線程共享資料,而又不需要同步的情形。(線程同步的開支比較大。)

l 原理

在每個線程中有一個存儲區域,該存儲區域有64個slot(資料槽)。可以通過該slot的索引值(一個DWORD數值),擷取指定的slot。每個slot可以設定,也可以取值。Slot中的資料是本線程中的私有資料。

l 步驟

配置設定

TlsAlloc,擷取可用的Slot索引。 該值應當為各個線程所共享。

設定。

TlsSetValue,為指定slot設定值,一個指針,指向本線程中的私有資料區。

取值。

TlsGetValue,從指定slot中取值,一個指針,指向某個線程中的私有資料。

釋放。

TlsFree,釋放某個slot,使其可以被其它線程使用。