Hola, tengo el siguiente el código y lo que sucede es que pare como si nunca se enviara la señal con pthread_cond_broadcast(&cvmisioneros); (tambien probe con _signal) pero no sucede nada , es decir no vuelven a querer tomar el mutex d emisioneroLlegando. Y corroboré que si esntra en el metodo de barcoYaCruzo().
Alguna sugerencia? Grx!!
Código:
void monitor::misioneroLlegando(int threadid){
pthread_mutex_lock(&mutex);
if( puedeSubirMisionero() ){
cmisioneros++;
cpasajeros++;
cout << "Misionero " << threadid << " sube al barco. \n";
pthread_mutex_unlock(&mutex);
subirPasajeros(threadid);
} else {
cout << "esperen a la prox";
pthread_cond_wait(&cvmisioneros, &mutex);
}
}
void monitor::barcoYaCruzo(){
if(llego){
cpasajeros = 0;
cmisioneros = 0;
ccanibales = 0;
flag = false;
llego = false;
pthread_cond_broadcast(&cvmisioneros);
}