返回 std::move(unique_lock<>)

问题描述 投票:0回答:1

在看《C++ in concurrent》这本书的时候,看到了返回

std::move(unique_lock<>)
的代码,例如:

    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_tail();});
        return std::move(head_lock);
    }

    std::unique_ptr<node> do()
    {
        std::unique_lock<std::mutex> head_lock(wait_for_data());
        return pop_head();
    }

是否有两把锁和两把解锁?它与下一个只有一个锁和解锁的例子一样吗?返回

unique_lock<>
是什么意思?

    std::unique_ptr<node> do()
    {
        std::unique_lock<std::mutex> head_lock(head_mutex);
        data_cond.wait(head_lock,[&]{return head!=get_tail();});
        return pop_head();
    }

提前感谢您的帮助!!

c++ move unique-lock
1个回答
0
投票

In

wait_for_data()
unique_lock
mutex
(head_mutex) 构造。然后在
do()
unique_lock
unique_lock
rvalue
构造,
wait_for_data()
返回。所以在
do()
中你实际上使用了与
unique_lock
创建的相同的
wait_for_data()

© www.soinside.com 2019 - 2024. All rights reserved.