Meyers Singleton зависит от того, что local static variable initialization is atomic.C++ - статическая инициализация переменных с = atomic?
Я создаю нечто подобное, но я хочу, чтобы синглтон фактически был одним из нескольких производных типов. Метод базового класса getInstance()
должен вызвать фабрику, которая вернет соответствующий тип.
Моя первая идея состоит в том
static Foo *instance = FooFactory(...);
8.5p2 из N3337, кажется, указывает, что это строго инициализация и не инициализация и присваивание и интерпретировать, что означает, что весь оператор является атомарным. Это верно?
Если бы не заявление
static Foo *instance(FooFactory(...));
быть разными?
Edit 8.5.2 -> 8.5.p2
Если I aver видит статическую инициализацию, которая создает потоки, я сразу же вызываю проблемы с менеджером о разработчике, который его написал :) – SergeyA
Особенно интересно, если мы говорим о Windows DLL - где почти все делается внутри DllMain (что и есть статический init), может привести к тупиковой ситуации при блокировке статического загрузчика :-) –