2017-10-07 38 views
0

我正在做一個基於線程的簡單教程。在這個練習中,我應該讓線程等待對方。 我已經逐字複製了示例代碼,但我沒有使用namespace std;,而是在每次需要時都寫入std::condition.wait_for intellisense錯誤

有關該錯誤對應於行:

if (condition.wait_for(std::unique_lock<std::mutex>(mut), std::chrono::seconds(3)))

智能感知告訴我,「表達必須有布爾型(或可轉換爲布爾)」,但我擡起頭的文件上condition.wait_for和它可以返回std::cv_status::timeout,std::cv_status::no_timeout以及truefalse。當我去建立時,它認爲它只能返回std::cv_status

它應該工作正確嗎?它是否需要第三個參數?我遵循的示例不使用一個。

+1

有兩種不同的'wait_for'函數。其中一人返回「bool」,另一人不返回。你打電話給沒有的人。 –

回答

0

正如Bo說的,這個函數有兩個版本。我假設在這個例子中有一個輸入錯誤,它意味着使用帶有三個參數的函數版本,下面是一些工作代碼,我不知道它是否與示例所用的方式相同。

if (condition.wait_for(std::unique_lock<std::mutex>(mut), std::chrono::seconds(3), [] {return true; }))