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