31

std::recursive_mutexと組み合わせることができますか?std::condition_variableつまり、次のようなことを行います:

std::unique_lock<std::recursive_mutex> lock(some_recursive_mutex)
some_condition_var.wait(lock);

許可されていないのなら、なぜですか?

VC++11 を使用しています。

4

2 に答える 2

34

を使用するstd::condition_variable_anyと、Lockableの概念をサポートする任意のタイプのオブジェクトを使用できます。

ただし、再帰的ミューテックスの場合、条件変数は待機中に1回だけunlockメソッドを使用するため、指定されたスレッドが再帰的ミューテックスを1回だけロックしていることを確認する必要があります。unique_lock

于 2013-01-14T17:28:21.733 に答える
3

あらゆる種類のロック可能なものを取ることができる でそれを行うことができますstd::condition_variable_anyが、プレーンstd::condition_variableは に特化していstd::unique_lock<std::mutex>ます。

于 2013-01-14T17:24:00.087 に答える