Подкачка двух unique_ptr
не гарантируется как потокобезопасная.
std::unique_ptr<T> a, b;
std::swap(a, b); // not threadsafe
Так как мне нужны свопы с атомарным указателем, и поскольку мне нравится управление владельцем unique_ptr
, есть ли простой способ их комбинировать?
Изменить: если это невозможно, я открыт для альтернатив. Я хотя бы хочу сделать что-то вроде этого:
threadshared_unique_ptr<T> global;
void f() {
threadlocal_unique_ptr<T> local(new T(...));
local.swap_content(global); // atomically for global
}
Каков идиоматический способ сделать это в С++ 11?