我知道在2个单独的线程中复制和重置单个shared_ptr
是有问题的,但是有两个线程试图创建同一个shared_ptr
对象的副本。它需要同步吗?参考计数器在这里可以正常工作吗?
std::shared_ptr<T> global_t(new T());
// Thread 1
std::shared_ptr<T> t1(global_t);
do something with t1
// Thread 2
std::shared_ptr<T> t2(global_t);
do something with t2
答案 0 :(得分:9)
std::shared_ptr
的{{3}},因此并发复制是可以的(尽管性能可能较差)。并且只有在其引用计数降为零时才会释放托管对象。