我可以同时复制一个shared_ptr吗?

时间:2016-10-25 14:55:00

标签: c++ multithreading c++11 shared-ptr atomicity

我知道在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

1 个答案:

答案 0 :(得分:9)

std::shared_ptr的{​​{3}},因此并发复制是可以的(尽管性能可能较差)。并且只有在其引用计数降为零时才会释放托管对象。