Потокобезопасная фабрика синглтонов
Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.
Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.
Всем привет!
Нужно было такое дело для «фатального» избавления от глобальных переменных. Вот слегка наваял. Сперва лез в мьютексы и атомики, но народ подсказал новые фишки Стандарта С++ (в плане потокобезопасной инициализации статических структур). Вот оно, наваялось. Страждущий — да увидит :))
Как мне это помешает создать еще один Holder и поломать всё?
Croessmah, если можно — на примере кода.
и всё, у меня уже два объекта Config,
как видим, Ваш Singleton не дает гарантий того,
что объект будет один в программе.
Так то да. Но ведь на С++ можно и на нуль начать делить, и ничто этому не помешает. Вопрос, а надо ли.
Вот именно. Если Ваш singleton не singleton, то зачем он нужен?
Сделать глобальный объект с защитой инициализации в многопоточной среде можно проще:
Речь идет всеж не о синглтоне как таковом, а о фабрике синглтонов. У которых виртуализируется пост-инициализация и разрушение. В примере выше этого нет. А для меня это было принципиально важным. Вот за этим и было нужно.