为什么在此处描述的是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<>
的最大吸引力之一);他们可能使用锁提供同步性。
至于您的第二个问题:是。