相关疑难解决方法(0)

C++ 11中的局部静态变量初始化是否是线程安全的?

我知道这是一个经常被问到的问题,但由于有很多变种,我想重新陈述它,并希望有一个反映当前状态的答案.就像是

Logger& g_logger() {
    static Logger lg;
    return lg;
}
Run Code Online (Sandbox Code Playgroud)

变量lg的构造函数是否保证只运行一次?

我从以前的答案中知道,在C++ 03中,这不是; 在C++ 0x草案中,这是强制执行的.但我想要一个更明确的答案

  1. 在C++ 11标准(非草稿)中,线程安全的初始化行为是否已完成?
  2. 如果以上是肯定的,那么在当前最新版本的热门编译器中,即gcc 4.7,vc 2011和clang 3.0,它们是否正确实施?

c++ thread-safety c++11

198
推荐指数
2
解决办法
6万
查看次数

在c ++ 0x中初始化原子变量

c ++ 0x中的原子变量可以全局初始化吗?

例如

atomic_int turnX = 5;
int main(){
    ....
}
Run Code Online (Sandbox Code Playgroud)

失败并出现错误:删除函数'std :: atomic :: atomic(const std :: atomic&)'

查看atomic_2.h确实给出了一个不允许这样做的想法.我是否正确地声明原子变量只能从函数中赋值?

initialization atomic c++11

3
推荐指数
1
解决办法
1062
查看次数

标签 统计

c++11 ×2

atomic ×1

c++ ×1

initialization ×1

thread-safety ×1