c++ - 为什么 std::shared_ptr 使用原子 cpu 操作

标签 c++ c++11 shared-ptr atomic

我无法理解为什么 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/

相关文章:

c++ - 为什么当 N>=10 时这段代码会卡住?

c++ - 在 C++ 中保持对象持久化?

c++ - 函数模板参数编译错误

python - C++ shared_ptr 与 Python 对象

C++11 将传统指针转换为智能指针。使用来自 llvm 的最新 SVN Clang 和 libc++

c++ - 在用户定义类型的容器上使用 std::find c++

c++ - 从子类访问私有(private)继承类的名称

c++ - 从文件读取并将值放入结构数组时遇到问题

c++ - 运算符重载 >>

c++11 - 如果我有 T&& temp = std::move(other);然后在按值接受 T 的函数上使用它