3
我想弄清楚这个代码行是干什么的。当计数小于6时,它会暂停或等待或运行代码吗?C++条件变量和等待
unique_lock<mutex> lck(mtx);
cv.wait(lck, [this]() { return count <6; });
我想弄清楚这个代码行是干什么的。当计数小于6时,它会暂停或等待或运行代码吗?C++条件变量和等待
unique_lock<mutex> lck(mtx);
cv.wait(lck, [this]() { return count <6; });
它会等待直到的是cv
通知count < 6
。从reference:
相当于
while (!pred()) { wait(lock); }
此重载可用于忽略虚假觉醒,同时等待特定条件成为现实。请注意,在输入此方法之前,必须获取锁定,在
wait(lock)
退出之后,它也会被重新获取,即锁定可以用作对pred()
访问的保护。
您可以将谓词视为停止等待的终止条件。
这就是我认为我添加计数++右吹cv.wait,但它不工作。我试图让每个线程只打印5个字符。任何想法? –
@RamonLarodo'wait()'块。它永远不会达到你的'count ++'。你必须在不同的线程中增加它。 – Barry
你能给我一个count ++控制线程的例子代码吗? –