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 ++控制線程的例子代碼嗎? –