使用g ++声明函数静态线程局部存储:
void f() {
static __thread somePodStruct thing;
...
}
我可以假设thing
将被初始化为零吗?
答案 0 :(得分:2)
根据GCC文件:
http://gcc.gnu.org/onlinedocs/gcc-3.3.1/gcc/Thread-Local.html
在C ++中,如果线程局部变量存在初始值设定项,则它必须是常量表达式,如ANSI / ISO C ++标准的5.19.2中所定义。
所以你可以明确地将它设置为零 因此,为了安全起见,没有任何假设的缺点,你可以自己实现零初始化。