C++11: pourquoi std::condition_variable utiliser std::unique_lock?

Je suis un peu confus sur le rôle de std::unique_lock lorsque l'on travaille avec std::condition_variable. Que j'ai compris le la documentation, std::unique_lock est fondamentalement un ballonnement de verrouillage de la garde, avec la possibilité d'échanger de l'état entre deux écluses.

Je n'ai jusqu'à présent utilisé pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex) à cette fin (je suppose que c'est ce que la STL utilise sur posix). Il prend un mutex, pas un verrou.

Quelle est la différence ici? C'est le fait que std::condition_variable traite std::unique_lock une optimisation? Si oui, comment exactement est-il plus rapide?

  • Êtes-vous confus au sujet de pourquoi vous avez besoin d'un verrouillage/mutex avec une variable de condition, ou à propos de la différence entre, d'une serrure et d'un mutex ou pourquoi une variable de condition utilise un unique de verrouillage et pas un mutex?
  • "pourquoi une variable de condition utilise un unique de verrouillage et pas un mutex" ce.