为什么存在共享_ptr的原子过载

Why atomic overloads for shared_ptr exist

本文关键字:ptr 存在 共享 为什么      更新时间:2023-10-16

为什么在此处描述的是shared_ptr的原子过载,而不是对std::atomic进行专业化,以处理shared_ptr s。似乎与C 标准库的其余部分使用的面向对象的模式不一致。

并只是为了确保我正确地做到这一点,当使用shared_ptr s实施读取复制副本iDIOM时,我们需要执行所有访问(读取和写入)以通过这些功能共享指针,对吗?

因为:

std :: Atomic可以与任何可触摸的类型t。

实例化

来源:http://en.cppreference.com/w/cpp/atomic/atomic

std::is_trivially_copyable<std::shared_ptr<int>>::value == false;

因此,您不能用std::shared_ptr<>实例化std::atomic<>。但是,自动内存管理在多线程中很有用,因此提供了这些过载。但是,这些过载很可能不是没有锁定的(首先使用std::atomic<>的最大吸引力之一);他们可能使用锁提供同步性。

至于您的第二个问题:是。