gpt4 book ai didi

c++ - C++ 中的线程安全单例使用静态成员实例(无惰性实例化)

转载 作者:行者123 更新时间:2023-11-27 22:54:04 25 4
gpt4 key购买 nike

我知道 Meyers 单例:

class Singleton{
private:
Singleton();

public:
Singleton & GetInstance(){
static Singleton instance;
return instance;
}
}

它的优点是它使用惰性求值,但在 C++ 03 中不保证是线程安全的。

如果静态实例是成员变量怎么办?这保证是线程安全的吗?我不明白为什么不。此外,我愿意为此放弃惰性实例化。

class Singleton{
private:
Singleton();
static Singleton instance;

public:
Singleton & GetInstance(){
return instance;
}
}

最佳答案

如果将单例实例更改为静态类成员,则该实例的创建将是线程安全的。无论你用它做什么,在许多情况下,遗嘱仍然需要受到保护。

另见 When are static C++ class members initialized?

关于c++ - C++ 中的线程安全单例使用静态成员实例(无惰性实例化),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34794856/

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