Cur*_*ous 4 c++ smart-pointers shared-ptr c++11
为什么有用于原子重载shared_ptr所描述这里,而不是那里是一个专门用于std::atomic与交易shared_ptr秒.似乎与C++标准库的其余部分采用的面向对象模式不一致.
并且只是为了确保我做对了,当使用shared_ptrs来实现读取副本更新时,我们需要通过这些函数对共享指针进行所有访问(读取和写入)吗?
因为:
std :: atomic可以用任何TriviallyCopyable类型T实例化.
资料来源:http://en.cppreference.com/w/cpp/atomic/atomic
和
std::is_trivially_copyable<std::shared_ptr<int>>::value == false;
因此,你不能实例化std::atomic<>用std::shared_ptr<>.但是,自动内存管理在多线程中很有用,因此提供了这些重载.那些重载很可能不是无锁定的(std::atomic<>首先使用的一个重要因素); 他们可能会使用锁来提供同步性.
至于你的第二个问题:是的.