Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: chispachan en 28 de Agosto de 2007, 02:52:30 AM

Título: problemas con los threads....
Publicado por: chispachan en 28 de Agosto de 2007, 02:52:30 AM
hola me gustaría generar varios hilos gestionados por uno maestro... para ello de momento he creado estas dos funciones para hilos:

void * hilo(void* param){    
    while(1){
    pthread_mutex_lock(&mutexSinc[int(param)]);
    pthread_cond_wait(&conds[int(param)],&mutexSinc[int(param)]);
    sleep(1);
    tareas[int(param)]->cargaActual++;
    cout<<"soy el hilo: "<<int(param) <<" tengo carga:"<<tareas.at(int(param))->carga <<endl;    
    pthread_mutex_unlock(&mutexSinc[int(param)]);
    pthread_mutex_lock(&mutexSinc2[int(param)]);
    pthread_cond_signal(&conds2[int(param)] );        
    pthread_mutex_unlock(&mutexSinc2[int(param)]);
    }
}

void activarHilo(int h){
       pthread_mutex_lock(&mutexSinc[int(h)]);
       pthread_cond_signal(&conds[h] );        
       pthread_mutex_unlock(&mutexSinc[int(h)]);
       pthread_mutex_lock(&mutexSinc2[h]);
       pthread_cond_wait(&conds2[h],&mutexSinc2[h]);
       pthread_mutex_unlock(&mutexSinc2[h]);
       
       
}

void * hiloGestor(void* param){
   
activarHilo(0);
activarHilo(0);
activarHilo(0);
activarHilo(0);
activarHilo(0);
activarHilo(0);
//     for (int i=nTareas;i>=0;i--){
//             activarHilo(i);                            
//     }


     
//     for(int i=nTareas;i>=0;i--){
//             activarHilo(i);        
//    }
}



por alguna razón activar hilo no funciona como yo quiero... quiero que active el hilo ejecute el sleep y después devuelva el control a hilo. Todas las variables estan inicializadas y todo.

¿alguien puede ayudarme? Es para un proyecto que tengo que entregar en una asignatura en diez días!

Gracias!!!