我试图实现一个必须在两个不同线程中使用的单例类,一个设置其成员变量,另一个使用它们,但是构造函数被调用了两次,所以我不能使用第一个线程,因为它们具有默认值。
实现是相当标准的,一个静态函数返回对该函数中静态成员的引用,我试图返回一个指针,创建一个原始指针并返回它,并且构造函数始终被调用两次。
class Singleton
{
public:
static Singleton &getInstance()
{
static Singleton instance;
return instance;
}
// public methods
private:
Singleton();
Singleton(const Singleton &) = delete;
Singleton(Singleton &&) = delete;
Singleton &operator=(const Singleton &) = delete;
Singleton &operator=(Singleton &&) = delete;
// member variables
};
尝试访问单例的线程已使用std :: async(std :: launch :: async,lambda)创建
我希望第一次调用该函数时会调用实例的构造函数,但是第二次实例具有不同的内存方向。
答案 0 :(得分:0)
C ++ 11标准保证静态局部变量仅创建一次。 这为我们提供了以下选项:
以上假设您已经实现了Singleton模式correctly。您也可能以某种方式搞砸了,但我不能告诉您,因为您没有提供完整的代码。
的所有信息