variable thread cplusplus c++ multithreading c++11 std recursive-mutex

c++ - thread - condition variable cplusplus



¿Puedes combinar std:: recursive_mutex con std:: condition_variable? (2)

Puede hacerlo con un std::condition_variable_any que puede tomar cualquier tipo de bloqueable, pero llano std::condition_variable está especializado para std::unique_lock<std::mutex> .

¿Puedes combinar std::recursive_mutex con std::condition_variable , lo que significa hacer algo como esto:

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

Si no está permitido, ¿por qué no?

Estoy usando VC ++ 11.


Puede, si usa std::condition_variable_any , lo que permite cualquier tipo de objeto que admita el concepto Lockable.

Sin embargo, en el caso de mutex recursivo, debe asegurarse de que el hilo dado solo haya bloqueado el mutex recursivo una vez, ya que la variable de condición solo usará el método de unlock en el unique_lock una vez durante la espera.