gpt4 book ai didi

C++是用=atomic初始化静态变量吗?

转载 作者:行者123 更新时间:2023-11-30 02:29:58 29 4
gpt4 key购买 nike

Meyers Singleton 依赖于 local static variable initialization is atomic .

我正在构建类似的东西,但我希望单例实际上是许多派生类型之一。基类 getInstance() 方法应调用将返回适当类型的工厂。

我的第一个想法是

static Foo *instance = FooFactory(...);

8.5p2 N3337似乎表明这是严格的初始化而不是初始化和赋值,我认为这意味着整个语句是原子的。它是否正确?

如果不是就声明

static Foo *instance(FooFactory(...));

不一样吗?

编辑 8.5.2 -> 8.5.p2

最佳答案

8.5.2 是“[dcl.init.string]”,似乎不相关。我认为你的意思是 8.5 para2。

是的,这是严格的初始化(特别是复制初始化 - 参见 8.5 para14)。

如果声明在函数内部,则为 the answer to the linked question shows , 一切顺利。

但是,如果这是命名空间范围内的静态变量,那么我看不到任何需要线程安全的初始化。 (如果初始化创建线程,这只是一个问题 - 但我敢打赌它确实如此。)

关于C++是用=atomic初始化静态变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39127703/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com