Re[6]: Синглтон через умный указатель
От: pegarus Россия PegasResearch.ru
Дата: 10.03.09 10:33
Оценка:
Здравствуйте, sokel, Вы писали:

S>Здравствуйте, sokel, Вы писали:


S>>Здравствуйте, sokel, Вы писали:



S>>>Но иногда всё таки требуется отложенная инициализация с многопоточностью и произвольным временем доступа (например, аллокаторы — никто не запрещает заполнять контейнер при инициализации статики, те же глобальные const std::string x = "xxx" и т.п.). Как я понял, универсального метода создания такого singleton нет, всё упирается в неатомарную инициализацию объектов синхронизации. Пока обхожусь такой вот конструкцией:


S>>Точнее, здесь получается не отложенная инициализация, а специфическое время жизни объекта — от первого обращения или инициализации статики до закрытия приложения. Кстати, может следует таким образом инстанцировать общий lock, а затем честно пользовать отложенную инициализацию через double check locking pattern? И всё равно непонятно, как быть с удалением...


S>Упс, про double check наврал, она в любом случае небезопасна. В общем, нужен быстрый метод получения объекта и в этом плане меня моя поделка устраивает. Минусы — отсутствие возможности контроля удяления. Но этим иногда можно пожертвовать.


А всё-таки, что мешает использовать обычный мьютекс? Для защиты указателя и счётчика ссылок (ниже есть код). Никак не пойму, вижу только намёки... ???
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.