Почему std:: shared_ptr, используя операции атомарного процессора

У меня проблема с пониманием того, почему shared_ptr использует инструкции атомарного процессора... Я не могу определить причины, потому что он НЕ является потокобезопасным. Может кто-нибудь объяснить.

Если вам интересно узнать, как я знаю, что он использует атомарные intstuructions: был клип из С++ и за его пределами, о котором говорят Herb and Andrei, но они никогда не упоминают причины, почему это так.

Ответ 1

Любой экземпляр shared_ptr является многопоточным. Данные, которые он указывает, не являются многопоточными. См. this.

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

См. аналогичный вопрос для BOOST: Безопасен ли поток shared_ptr xxx?