首页 >后端开发 >C++ >thread_local 变量在块作用域中是隐式静态的吗?

thread_local 变量在块作用域中是隐式静态的吗?

Susan Sarandon
Susan Sarandon原创
2024-11-02 03:35:02483浏览

Are thread_local Variables Implicitly Static in Block Scope?

使用 thread_local 声明的变量会自动静态吗?

下面的代码段乍一看是相同的:

<code class="cpp">void f() {
    thread_local vector<int> V;
    // ...
}

void f() {
    static thread_local vector<int> V;
    // ...
}</code>

然而,C 标准揭示了一个微妙的差异。当定义具有块作用域的 thread_local 变量时,如果没有明确声明,则隐含静态存储类说明符。这意味着第一个代码段与第二个代码段等效。

尽管它们的定义相似,但 static 和 thread_local 变量有显着差异。具有静态存储持续时间的变量与整个程序相关联,而thread_local变量与各个线程相关联。每个线程都有自己独特的对象或与 thread_local 变量关联的引用。

以上是thread_local 变量在块作用域中是隐式静态的吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn