C ++ 11: ¿por qué std :: condition_variable usa std :: unique_lock?

Estoy un poco confundido sobre el papel destd::unique_lock cuando se trabaja constd::condition_variable. Por lo que entendídocumentación, std::unique_lock es básicamente un protector de bloqueo hinchado, con la posibilidad de cambiar el estado entre dos bloqueos.

Hasta ahora he usadopthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex) para este propósito (supongo que eso es lo que usa el STL en posix). Se necesita un mutex, no un candado.

¿Cuál es la diferencia aquí? Es el hecho de questd::condition_variable trata constd::unique_lock una optimización? Si es así, ¿cómo es más rápido?

Respuestas a la pregunta(2)

Su respuesta a la pregunta