C ++ 11: por que o std :: condition_variable usa o std :: unique_lock?

Estou um pouco confuso sobre o papel dostd::unique_lock ao trabalhar comstd::condition_variable. Tanto quanto eu entendi odocumentação, std::unique_lock é basicamente um protetor de bloqueio inchado, com a possibilidade de trocar o estado entre dois bloqueios.

Eu até agora useipthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex) para este fim (eu acho que é o que o STL usa no posix). É preciso um mutex, não um bloqueio.

Qual a diferença aqui? É o fato de questd::condition_variable lida comstd::unique_lock uma otimização? Se sim, como exatamente é mais rápido?

questionAnswers(2)

yourAnswerToTheQuestion