c – 我可以同时复制一个shared_ptr吗?
作者:互联网
我知道在两个单独的线程中复制和重置单个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
解决方法:
一个std :: shared_ptr的refcount is synchronized,所以并发复制是可以的(尽管可能性能较差).并且只有在其refcount降至零时才会释放托管对象.
标签:c,c11,multithreading,shared-ptr,atomicity 来源: https://codeday.me/bug/20190722/1502194.html