首页 > 后端开发 > C++ > C 11 如何保证局部静态变量的线程安全初始化?

C 11 如何保证局部静态变量的线程安全初始化?

Barbara Streisand
发布: 2024-12-24 12:11:15
原创
243 人浏览过

How Does C  11 Guarantee Thread-Safe Initialization of Local Static Variables?

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

人们对 C 11 中局部静态变量的线程安全初始化提出了担忧C 及其跨不同标准的演变。让我们在 C 11 的背景下具体解决这个问题。

C 11 标准

第 6.7 节中的 C 11 标准(不是草案)指定:

  • 局部静态变量在控件第一次进入它们时被初始化声明。
  • 在变量初始化时进入声明的并发执行必须等待初始化完成。
  • 实现在初始化程序执行期间不得引入死锁。

因此,在C 11中,局部静态变量的线程安全初始化完成。

热门编译器实现

主要编译器,例如:

  • gcc 4.7
  • vc 2011
  • clang 3.0

已正确实现所需的线程安全初始化行为按 C 11 标准。这可以确保示例中的 lg 这样的局部静态变量的构造函数即使在多线程环境中也只能运行一次。

其他注意事项

这很重要需要注意的是,线程安全初始化仅适用于变量本身的初始化。除非采用额外的同步机制,否则通过引用对变量的后续访问不能保证是线程安全的。

以上是C 11 如何保证局部静态变量的线程安全初始化?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板