C ++ 11 mutex只使用静态初始化吗?

时间:2014-10-10 15:39:52

标签: c++ multithreading c++11 mutex

C ++ 11标准是否保证互斥不使用动态初始化?例如,如果我们声明一个互斥类型的全局变量,然后在另一个TU中的另一个全局变量的构造函数中使用它,那么构造的顺序是否会成为一个问题呢?

2 个答案:

答案 0 :(得分:1)

你使用不精确的语言令人困惑。术语"零初始化"标准中的特定含义不适用于mutex,也不适用于您声明的用例。

通过查看你的例子,让我们在这里设置一个理解你真正要求的东西:

  

如果我们声明一个互斥类型的全局变量,然后在其中使用它   另一个全局变量的构造函数在另一个CU中,将是该命令   建筑是一个值得关注的问题吗?

我们在这里仍然有点模糊,并且管理非成员变量初始化的规则是微妙的,所以我将总结我认为的一般声音建议。

一般情况下,不要依赖非成员变量的初始化顺序。

这是一个不使用全局变量的好理由,只要你能避免它。

答案 1 :(得分:-3)

当然可以。在任何情况下,如果您在程序的启动阶段(即:main()调用之前)讨论全局变量之间的交互,那么这是一个问题。

此外,如果它可以初始化为零(与其确切含义无关),那么初始化将在互斥体本身的构造函数中出现,因此构造的顺序将是一个问题。