Есть ли проблема с этой реализацией синглтона?

Я обычно привык реализовывать одноэлементный шаблон таким образом, потому что это так просто:

class MyClass
{
    public:
        MyClass* GetInstance()
        {
            static MyClass instance;
            return &instance;
        }

    private:
        //Disallow copy construction, copy assignment, and external
        //default construction.
};

Это кажется значительно проще, чем создание статического указателя экземпляра, инициализируя его в исходном файле и используя динамическое выделение памяти в функции экземпляра с охранниками.

Есть ли обратная сторона, которую я не вижу? Для меня это выглядит потокобезопасным, потому что я думаю, что первый поток, который попадет в первую строку, вызовет создание экземпляра - и это кажется красивым и кратким. Я полагаю, что должна быть проблема, которую я не вижу, поскольку это не распространено - я хотел бы получить некоторые отзывы, прежде чем продолжать использовать его

9
задан John Humphreys - w00te 10 February 2012 в 14:07
поделиться