Linux - Duda con Hilos

 
Vista:

Duda con Hilos

Publicado por novato (1 intervención) el 23/11/2009 20:04:50
Hola a Todos:

Mi nombre es Jorge y soy me dedico al desarrollo de aplicaciones informáticas para la industria. Hasta ahora nunca he trabajado con hilos y me han encargado una aplicación en la que necesito utilizarlos.

Por lo que he entendido, programar con hilos ó implementar hilos en el código de desarrollo de una aplicación sirve para poder simultaneizar tareas compartiendo la misma memoria que la tarea principal que desencadena dichos hilos.

Pues bien, si esto no lo he entendido mal, he estado realizando pruebas y no es así ó por lo menos yo no he conseguido hacer esto.

Adjunto el código con el que estoy probando, pero no funciona de forma simultanea, es decir la tarea principal lanza todos los hilos correctamente, pero dicha tarea principal no continua hasta que todos los hilos terminan:

//-------------------------------------------------------------------------------------------------
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_THREADS 8

typedef struct {
int id,valor;
} parameters;

parameters parametros[MAX_THREADS];
pthread_t tabla_hilos[MAX_THREADS];

void *funcion_thread(parameters *p) {
printf("Ejecutando la función en el thread con id %d al que se le ha pasado el valor %d\n", p->id,p->valor);
pthread_exit(p->valor);
}

int main(void){
int i, *res;

//creamos tantos threads como MAX_THREADS
printf("\nCreando threads...\n\n");
for (i=0; i<MAX_THREADS; i++) {
parametros[i].id = i;
parametros[i].valor=rand()%100;

pthread_create(&tabla_hilos[i], NULL, (void *)&funcion_thread,(void *)¶metros[i]);
}

// esperamos que terminen todos los threads
printf("\nThreads creados. Esperando que terminen...\n\n");
for (i=0; i<MAX_THREADS; i++) {
int *aux;
pthread_join(tabla_hilos[i],&aux);
printf("El thread %d devolvio el valor %d\n", i,aux);
}


//Texto de depuración
** ( ESTE TEXTO NO SE IMPRIME HASTA QUE TODOS LOS HILOS FINALIZAN ) **
printf("Esperamos a que finalizen los Hilos . . .");

return 0;
}

//-------------------------------------------------------------------------------------------------

¿ Alguien me podría ayudar ?
( Espero haberme explicado con claridad ? )

Muchas Gracias y Saludos Cordiales !!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder