我无法理解为什么 shared_ptr 使用原子 cpu 指令...我无法找出原因,因为它不是线程安全的。 有人可以解释一下吗。
如果你想知道我是怎么知道它使用原子结构的:有一段来自 C++ 的剪辑以及 Herb 和 Andrei 谈论它的地方,但他们从未提及为什么会这样。
最佳答案
shared_ptr
的任何实例都是多线程安全的。它指向的数据不是多线程安全的。参见 this .
如果正确应用原子指令(通过竞争线程访问以相同顺序完成保护)是实现线程安全的一种方法。另一种方法是使用互斥体。
查看 BOOST 的类似问题:Is boost shared_ptr xxx thread safe?
关于c++ - 为什么 std::shared_ptr 使用原子 cpu 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8980328/