【发布时间】:2021-04-05 19:31:21
【问题描述】:
我有两个变量。一个是__thread,另一个是static __thread。如果我有一个构造函数,我要做的就是将所有成员变量归零。我也碰巧只在函数体之外使用这个类。我的变量是否会初始化为零而无需我编写构造函数?
澄清一下。我有一个定义为__thread Foo foo 和static __thread Foo foo 的类。我并不是说我有一个字面上名为 __thread 的变量,我以某种方式欺骗了编译器让我在不命名类型的情况下使用它。我肯定静态是零初始化的,但是如果 __thread 撤消它或者如果没有静态的 __thread 将初始化为零,IDK 将被初始化
【问题讨论】:
-
__thread在 C++ 中不是一个东西。这是一个 C 关键字,在 C++ 中没有任何意义。 -
@NicolBolas 一些编译器支持,请参阅stackoverflow.com/a/7047301/2527795
-
@NicolBolas 这是clang支持的gcc扩展
-
如果您使用 C++,为什么不使用实际的 C++ 语言功能来创建线程局部变量?
-
@NicolBolas TBH 我应该用不同的方式标记它。目前它是 C++,但我可能会降级为 C。我听说 thread_local 做了更多的工作并支持我不需要的非平凡构造函数