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

发布于 2022-09-02 09:19:35 字数 491 浏览 18 评论 0

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

__declspec (thread) int iGlobal = 1 ;

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

__declspec (thread) static int iLocal = 2 ;

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

や三分注定 2022-09-09 09:19:35

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文