Я пытаюсь реализовать одноэлементный класс, который должен использоваться в двух разных потоках, один устанавливает свои переменные-члены, а другой использует их, но конструктор вызывается дважды, поэтому я не могу использовать члены, установленные вПервый поток, потому что у них есть значение по умолчанию.
Реализация вполне стандартная, статическая функция, которая возвращает ссылку на статический член в этой функции, я попытался вернуть указатель, создать необработанный указатель и вернутьон и конструктор всегда вызываются дважды.
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)
Я ожидал, что конструктор экземпляра вызывается только в первый раз, когда я вызываю эту функцию, но второй экземпляр экземпляра имеет другое направление памяти.