首页 > windows线程本地存储__declspec (thread) 语法问题?

windows线程本地存储__declspec (thread) 语法问题?

Microsoft对C的扩充功能使这件工作更加容易。只要在要对每个线程都保留不同内容的变量前加上__declspec
(thread)就好了。比如要定义全局静态变量,则为:

__declspec (thread) int iGlobal = 1 ;

而要定义函数内部的静态变量,则为:

__declspec (thread) static int iLocal = 2 ;

我很疑惑既然是线程本地存储,就说明这个变量是线程私有的,也就是只有定义这个变量的线程才能用,那为什么__declspec (thread) 还可以让变量成为全局静态变量?难不成这个变量还能给别的线程用?这样的话不就不是TLS了么?还是说这个全局变量虽然是全局的,但只能给本线程使用?但是无论是我说的哪种情况,我认为只要加上static的这个版本也就是__declspec (thread) static这一种形式就够了。
上面说了这么多,意思其实就一个,千万别被我绕晕


__declspec (thread) int iGlobal = 1 ;这是线程局部变量
__declspec (thread) static int iLocal = 2 ;这是线程局部静态变量,也就是TLS
书错了

【热门文章】
【热门文章】