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



我无法理解为什么shared_ptr使用原子cpu指令。。。我想不出原因,因为它不安全。有人能解释一下吗。

如果你想知道我是怎么知道它使用原子结构的:有一个来自C++及其他版本的片段,赫伯和安德烈在其中谈论它,但他们从未提及为什么会这样。

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

原子指令如果应用得当(通过竞争线程访问按相同顺序进行保护)是实现线程安全的一种方式。另一种方法是使用互斥。

请参阅BOOST的类似问题:BOOST shared_ptr xxx线程安全吗?

Herb Sutter刚刚在他的gotw 95中使用了shared_ptr作为一个很好的例子,他在那里详细阐述了设计决策:
https://herbsutter.com/2014/01/13/gotw-95-solution-thread-safety-and-synchronization/

最新更新