在“C++ Concurrency in Action”一书中阅读以下方法
std::unique_lock<std::mutex> wait_for_data()
{
std::unique_lock<std::mutex> head_lock(head_mutex);
data_cond.wait(head_lock,[&]{return head.get()!=get_tail();});
return std::move(head_lock);
}
我不明白为什么 head_lock 在返回时是 std::move-ed。我对移动用法和 RVO 的概念和直觉与C++11 右值和移动语义混淆(return 语句)中共享的观点相匹配
但我倾向于相信作者会更好地了解。有人可以澄清什么时候 std::move 返回值更好,并且有什么特别关于锁的东西吗?谢谢。