class C {
mutable std::mutex _lock;
map<string,string> deep_member;
public:
auto get_big_lump()
{
std::unique_lock<std::mutex> lock(_lock); // establish scope guard
return deep_member; // copy the stuff while it can't be changed on another thread.
}
};
Каково гарантированное время в отношении защиты и копирования возвращаемого значения? Будет ли копирование выполняться, пока удерживается блокировка, или некоторые из них могут быть выполнены после возврата из тела функции в случае разрешенных (или фактических!) оптимизаций?