Если поток 2 считывал m_pUnique из someWrapper, то не гарантируется (не подразумевается барьер), что он обнаружит, что m_pUnique изменился, если элемент не помечен как энергозависимый или не атомарный.
Однако, другойкод, который должен повторно проверить объект, запускается при вызове деструктора, поэтому деструктор увидит, что m_pUnique уже имеет значение nullptr, предполагая, что ваш ЦП поддерживает кэш и когерентность ядра. Это предотвращает двойное разрушение целевого объекта.
Без когерентности и дополнительных примитивов синхронизации вы SOL, поскольку в std :: unique_ptr <>.
* нет никаких гарантий безопасности потоков. 1007 * Редактировать : Я хотел бы также отметить, что при наличии нескольких потоков к объекту для записи (удаление является операцией записи), вы должны использовать зЬй :: мьютекс все равно, что делают большую часть вопроса тоо, как любой доступк общему объекту нужно охранять для корректности.