【发布时间】:2015-07-01 13:20:27
【问题描述】:
我试图弄清楚这段代码行的作用。当计数小于 6 时,它会暂停或等待或运行代码吗?
unique_lock<mutex> lck(mtx);
cv.wait(lck, [this]() { return count <6; });
【问题讨论】:
标签: c++ multithreading c++11 condition-variable
我试图弄清楚这段代码行的作用。当计数小于 6 时,它会暂停或等待或运行代码吗?
unique_lock<mutex> lck(mtx);
cv.wait(lck, [this]() { return count <6; });
【问题讨论】:
标签: c++ multithreading c++11 condition-variable
它将等待直到cv 收到count < 6 的通知。来自reference:
相当于
while (!pred()) { wait(lock); }此重载可用于在等待特定条件变为真时忽略虚假唤醒。注意在进入这个方法之前必须获取锁,在
wait(lock)退出后也会重新获取,即锁可以作为pred()访问的保护。
您可以将谓词视为停止等待的终止条件。
【讨论】:
wait() 块。它永远不会到达您的count++。你必须在不同的线程中增加它。