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?