前端之家收集整理的这篇文章主要介绍了
C 0x静态初始化和线程安全,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我知道,从C 03标准来看,
功能范围静态初始化不能保证线程安全:
void moo()
{
static std::string cat("argent"); // not thread safe
...
}
使用C 0x标准终于提供标准线程支持,是要求线程安全的函数范围静态初始化吗?
似乎初始化将是线程安全的,因为在进入
函数时对象被动态初始化的情况下,它保证在关键部分执行:
§ 6.7 stmt.decl
…这样一个对象被初始化,第一次控制通过它的声明…如果控件在对象被初始化时同时进入声明,则并发执行将等待完成初始化…
有一个潜在的边缘情况,如果从main()返回后,静态对象的析构函数在static local已经被破坏后调用该函数,行为是未定义的.但是,应该很容易避免.
原文链接:https://www.f2er.com/c/115456.html