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这一种形式就够了。
上面说了这么多,意思其实就一个,千万别被我绕晕
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
__declspec (thread) int iGlobal = 1 ;这是线程局部变量
__declspec (thread) static int iLocal = 2 ;这是线程局部静态变量,也就是TLS
书错了