1. 程式人生 > 實用技巧 >_declspec(thread)變數(轉)

_declspec(thread)變數(轉)

thread 用於宣告一個執行緒本地變數. __declspec(thread)的字首是Microsoft新增給Visual C++編譯器的一個修改符。它告訴編譯器,對應的變數應該放入可執行檔案或DLL檔案中它的自己的節中。__declspec(thread)後面的變數 必須宣告為函式中(或函式外)的一個全域性變數或靜態變數。不能宣告一個型別為__declspec(thread)的區域性變數。

e.g
__declspec(thread)
class X{
public:
int I;
} x; // x is a thread objectX y; // y is not a thread object

執行緒本地儲存(TLS)是給定多執行緒程序中的每個執行緒為特定於執行緒的資料分配儲存的機制。在標準的多執行緒程式中,資料在給定程序的所有執行緒之間共享,而執行緒本地儲存是分配每個執行緒資料的機制。有關執行緒的完整討論,請參閱Windows SDK中的程序和執行緒。

Microsoft C語言包含擴充套件的儲存類屬性thread,它與__declspec關鍵字一起用來宣告一個執行緒本地變數。例如,下面的程式碼聲明瞭一個整數執行緒區域性變數,並用一個值初始化它:

__declspec( thread ) int tls_i = 1;  

可以把它定義為static,使每個執行緒看到,同時每個執行緒得到的是屬於自己的值

轉載自微軟,連結如下

https://msdn.microsoft.com/en-us/library/4ax54352.aspx