Нет, это не безопасно.При чтении трех абзацев перед примером и двух после него потенциальной проблемой является система, в которой запись в pInstance
выполняется (сбрасывается в память) в потоке B до того, как конструкция Singleton
была сброшена.Затем поток A может прочитать pInstance
, увидеть указатель как ненулевой и вернуть его, потенциально позволяя потоку A получить доступ к Singleton
до того, как поток B закончит его сохранение в памяти.
Первый сброснеобходимо убедиться, что очистка записей во время построения Singleton
была завершена до , и вы пытаетесь использовать его в другом потоке.
В зависимости от оборудования, на котором вы работаетеэто не может быть проблемой.