Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





problemas con los threads....

Iniciado por chispachan, 28 de Agosto de 2007, 02:52:30 AM

« anterior - próximo »

chispachan

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!!!






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.