Различные объекты интеллектуального указателя обеспечивают различную степень безопасности потоков. Вы должны тщательно проверить документацию для индивидуальной реализации, чтобы узнать, какой уровень безопасности потоков он обеспечивает.
Наиболее распространенный вопрос касается, в частности, о std::shared_ptr
и std::weak_ptr
. Они обеспечивают стандартную безопасность потоков для отдельных экземпляров указателя. То есть один поток не должен иметь доступ к shared_ptr
или weak_ptr
, тогда как другой поток является или может быть изменен таким же shared_ptr
или weak_ptr
объектом. Тем не менее, они обеспечивают полную безопасность потоков для разных указателей, которые ссылаются на один и тот же объект. Таким образом, один поток может изменять shared_ptr
, а другой поток обращается к shared_ptr
тому же базовому объекту, чье время жизни управляется интеллектуальными указателями.
Я полагаю, что безопасность потоков применима к разным экземплярам 'shared_ptr' (как вы говорите), но не к объекту, указанному в – LWimsey
@LWime, да, это так. – Yakk