Supongamos que alguna variable de condición "cond" está asociada con una variable mutex "mutex". Si un hilo está durmiendo en cond
después de llamar al pthread_cond_wait(&cond,&mutex)
, y ha finalizado otro hilo que tiene mutex
bloqueado, ¿importa si el hilo llama a pthread_cond_signal(&cond)
antes o después de llamar al pthread_mutex_unlock(&mutex)
? ¿Necesita siquiera desbloquear el mutex si llama al pthread_cond_signal(&cond)
, ya que el hilo de dormir adquirirá el mutex de todos modos?Señalización de una variable de condición (pthreads)
EDITAR: Según https://computing.llnl.gov/tutorials/pthreads/#ConVarOverview, "No poder desbloquear el mutex después de llamar a pthread_cond_signal() no permite que se complete una rutina pthread_cond_wait() correspondiente (se mantendrá bloqueado)." Supongo que entonces, se requiere desbloquear, y quizás solo después.
+1 por responder a su propia pregunta. –