本「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 戻り値が優れている場合、誰かが明確にすることができますか? ロックについて具体的に何かがありますか? ありがとう。