2017-10-07 7 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、およびtrueおよびfalseを返すことができます。私がビルドに行くとき、それはstd::cv_statusだけを返すことができると思う。

正しく動作するはずですか? 3番目のパラメータが必要ですか?私が次の例では使用していません。

+1

「wait_for」関数は2つあります。それらのうちの1つは「ブール」を返し、もう1つは返りません。あなたはそうでない人を呼んでいます。 –

答えて

0

Bo氏によれば、この機能には2つのバージョンがあります。この例ではタイプミスがあったと仮定し、3つのパラメータを持つ関数のバージョンを使用することを意図しています。ここではいくつかの作業コードがありますが、意図した例と同じ方法で動作するかどうかはわかりません。

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