gpt4 book ai didi

c++ - 不稳定的单例成员?

转载 作者:行者123 更新时间:2023-11-27 23:17:58 24 4
gpt4 key购买 nike

我有一个使用单例软件设计模式的状态引擎。状态引擎可以被多个线程访问。该对象是在程序启动时从主线程初始化的,并不是为延迟初始化而设计的。

我的问题是,我是否应该像这样使公共(public)静态成员易变:

class CStateEngine final
{
private:
/* Contains the Singleton object */
static CStateEngine* instance;
protected:
CStateEngine();
public:
static CStateEngine* Instance() volatile; // Returns the Singleton instance
static void DeleteInstance() volatile; // Deletes the Singleton instance
}

最佳答案

C++ 中的 volatile 关键字与任何其他语言中的都不同。在 C++ 中,这意味着编译器将确保该值始终是从内存中新读取的,并且永远不会使用缓存的值。

它用于嵌入式世界和其他地方。如果您想始终查看某个变量的最新信息,您可以将其标记为 volatile

它与多线程无关。

你不应该在多线程环境中使用单例,因为当多个线程试图访问你的对象时,它会成为争用的原因。它会导致您的程序滞后,并且它首先完全无法使用线程。

您应该传递对象,并且您应该能够根据需要创建新的对象。

如果您做不到,请检查您的设计。

关于c++ - 不稳定的单例成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15269285/

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