У меня есть следующий пример кода C ++:
class Factory
{
public:
static Factory& createInstance()
{
static Factory fac;
return fac;
}
private:
Factory()
{
//Does something non-trivial
}
};
Предположим, что createInstance
вызывается двумя потоками одновременно. Так будет ли получен объект правильно создан? Что произойдет, если второй поток войдет в вызов createInstance
, когда первый поток находится в конструкторе Factory
?