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

NoS*_*tAl 11 c++ atomic shared-ptr c++11

我有一个问题,理解为什么shared_ptr使用原子CPU指令...我无法弄清楚原因,因为它不是线程安全的.有人可以解释一下.

如果你想知道我是如何知道它使用原子intstuructions:有一个来自C++的剪辑,除了Herb和Andrei谈论它之外,但他们从未提及为什么会这样.

wal*_*lyk 15

任何实例shared_ptr都是多线程安全的.它指向的数据不是多线程安全的.看到这个.

如果正确应用原子指令(通过竞争线程访问以相同顺序完成保护)是实现线程安全的一种方法.另一种方法是使用互斥体.

查看BOOST的类似问题: boost shared_ptr xxx线程是否安全?

  • 更具体一点:`shared_ptr`中的共享引用计数可以由多个线程访问.这就是为什么有必要以原子方式递增/递减它. (6认同)