Является ли этот способ создания статического экземпляра потокобезопасным?

У меня есть следующий пример кода C ++:

class Factory
{
public:
    static Factory& createInstance()
    {
        static Factory fac;
        return fac;
    }

private:
    Factory() 
    {
        //Does something non-trivial
    }
};

Предположим, что createInstance вызывается двумя потоками одновременно. Так будет ли получен объект правильно создан? Что произойдет, если второй поток войдет в вызов createInstance , когда первый поток находится в конструкторе Factory ?

6
задан Naveen 18 December 2010 в 06:58
поделиться