C ++ 11标准是否保证互斥不使用动态初始化?例如,如果我们声明一个互斥类型的全局变量,然后在另一个TU中的另一个全局变量的构造函数中使用它,那么构造的顺序是否会成为一个问题呢?
答案 0 :(得分:1)
你使用不精确的语言令人困惑。术语"零初始化"标准中的特定含义不适用于mutex
,也不适用于您声明的用例。
通过查看你的例子,让我们在这里设置一个理解你真正要求的东西:
如果我们声明一个互斥类型的全局变量,然后在其中使用它 另一个全局变量的构造函数在另一个CU中,将是该命令 建筑是一个值得关注的问题吗?
我们在这里仍然有点模糊,并且管理非成员变量初始化的规则是微妙的,所以我将总结我认为的一般声音建议。
一般情况下,不要依赖非成员变量的初始化顺序。
这是一个不使用全局变量的好理由,只要你能避免它。
答案 1 :(得分:-3)
当然可以。在任何情况下,如果您在程序的启动阶段(即:main
()调用之前)讨论全局变量之间的交互,那么这是一个问题。
此外,如果它可以初始化为零(与其确切含义无关),那么初始化将在互斥体本身的构造函数中出现,因此构造的顺序将是一个问题。