_declspec(thread)变量(转)

Posted spruce

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了_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

以上是关于_declspec(thread)变量(转)的主要内容,如果未能解决你的问题,请参考以下文章

_declspec(dllexport)和.def(转)

__declspec 纯属转载

c++ 中__declspec 的用法

多线程访问独立空间全局变量

多线程访问独立空间全局变量

裸函数