加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C 0x静态初始化和线程安全

发布时间:2020-12-16 07:51:42 所属栏目:百科 来源:网络整理
导读:我知道,从C 03标准来看,功能范围静态初始化不能保证线程安全: void moo(){ static std::string cat("argent"); // not thread safe ...} 使用C 0x标准终于提供标准线程支持,是要求线程安全的函数范围静态初始化吗? 解决方法 似乎初始化将是线程安全的,因为
我知道,从C 03标准来看,功能范围静态初始化不能保证线程安全:
void moo()
{
    static std::string cat("argent");  // not thread safe
    ...
}

使用C 0x标准终于提供标准线程支持,是要求线程安全的函数范围静态初始化吗?

解决方法

似乎初始化将是线程安全的,因为在进入函数时对象被动态初始化的情况下,它保证在关键部分执行:

§ 6.7 stmt.decl

…这样一个对象被初始化,第一次控制通过它的声明…如果控件在对象被初始化时同时进入声明,则并发执行将等待完成初始化…

有一个潜在的边缘情况,如果从main()返回后,静态对象的析构函数在static local已经被破坏后调用该函数,行为是未定义的.但是,应该很容易避免.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读