使用 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中文网其他相关文章!