Я знаю, что копирование и сброс одного shared_ptr
в 2-х отдельных потоках проблематично, но как насчет 2-х потоков, которые пытаются создать одну и ту же копию? 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
«s refcount синхронизирован, поэтому одновременное копирование возможно (хотя может быть менее производительным). И управляемый объект освобождается только тогда, когда его рефконт падает до нуля.
Других решений пока нет …