Могу ли я скопировать один shared_ptr одновременно?

Я знаю, что копирование и сброс одного 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

3

Решение

std::shared_ptr«s refcount синхронизирован, поэтому одновременное копирование возможно (хотя может быть менее производительным). И управляемый объект освобождается только тогда, когда его рефконт падает до нуля.

9

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector