Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/11/2011, 14:47
usuaria
 
Fecha de Ingreso: marzo-2007
Mensajes: 302
Antigüedad: 17 años, 1 mes
Puntos: 2
Pregunta Problema con variables de condición.

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);
    }