2015-04-23 70 views
3

我想弄清楚这个代码行是干什么的。当计数小于6时,它会暂停或等待或运行代码吗?C++条件变量和等待

unique_lock<mutex> lck(mtx); 
cv.wait(lck, [this]() { return count <6; }); 

回答

0

它会等待直到cv通知count < 6。从reference

相当于

while (!pred()) { 
    wait(lock); 
} 

此重载可用于忽略虚假觉醒,同时等待特定条件成为现实。请注意,在输入此方法之前,必须获取锁定,在wait(lock)退出之后,它也会被重新获取,即锁定可以用作对pred()访问的保护。

您可以将谓词视为停止等待的终止条件。

+0

这就是我认为我添加计数++右吹cv.wait,但它不工作。我试图让每个线程只打印5个字符。任何想法? –

+0

@RamonLarodo'wait()'块。它永远不会达到你的'count ++'。你必须在不同的线程中增加它。 – Barry

+0

你能给我一个count ++控制线程的例子代码吗? –