C ++ 11: Warum verwendet std :: condition_variable std :: unique_lock?

Ich bin ein bisschen verwirrt über die Rolle vonstd::unique_lock beim arbeiten mitstd::condition_variable. Soweit ich das verstanden habeDokumentation, std::unique_lock ist im Grunde ein aufgeblähter Schlosswächter mit der Möglichkeit, den Zustand zwischen zwei Schlössern zu wechseln.

Hab ich bisher benutztpthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex) für diesen Zweck (ich denke, das ist, was die STL auf Posix verwendet). Es braucht einen Mutex, keine Sperre.

Was ist der Unterschied hier? Ist die Tatsache, dassstd::condition_variable befasst sich mitstd::unique_lock eine optimierung? Wenn ja, wie genau ist es schneller?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage