g ++线程局部变量是否遵循默认初始化规则?

时间:2010-07-02 00:16:06

标签: c++ gcc multithreading static initialization

使用g ++声明函数静态线程局部存储:

void f() {
    static __thread somePodStruct thing;
    ...
}

我可以假设thing将被初始化为零吗?

1 个答案:

答案 0 :(得分:2)

根据GCC文件:

http://gcc.gnu.org/onlinedocs/gcc-3.3.1/gcc/Thread-Local.html

  

在C ++中,如果线程局部变量存在初始值设定项,则它必须是常量表达式,如ANSI / ISO C ++标准的5.19.2中所定义。

所以你可以明确地将它设置为零 因此,为了安全起见,没有任何假设的缺点,你可以自己实现零初始化。

相关问题