Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Menu

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menu

Mensajes - chispachan

#1
General Programadores / problemas con los threads....
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!!!





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.