Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Esperas entre hilos

Estas en el tema de Esperas entre hilos en el foro de C/C++ en Foros del Web. Hola a todos! Os planteo mi pregunta. Tengo un programa en el que se crean 5 hilos. Dichos hilos tienen que ejecutar una función, hello, ...
  #1 (permalink)  
Antiguo 24/04/2010, 07:30
 
Fecha de Ingreso: enero-2010
Mensajes: 69
Antigüedad: 14 años, 9 meses
Puntos: 0
Esperas entre hilos

Hola a todos!

Os planteo mi pregunta. Tengo un programa en el que se crean 5 hilos. Dichos hilos tienen que ejecutar una función, hello, varias veces, pero no pueden ejecutarla por segunda vez hasta que los 5 hilos la hayan ejecutado por primera vez.

Es decir, que si el primer hilo la ejecuta una vez, debe esperar a que terminen todos los demás para poder ejecutarla la segunda vez, y así sucesivamente, la tercera, la cuarta, etc...

En código, más o menos, resultaría así:

Código PHP:
int nVeces 5;
for (
i=0i<ni++){
        
pthread_create(&threads[i], NULLhello, &args[i]);
}

void *hello(void *arg)
{

    
printf("Soy el hilo %d ejecutando la %d vez\n"p->idi);

         }
    return (
NULL);

Teniendo en cuenta el código, cada hilo debe ejecutar la funcion 5 veces, pero debería ser:

Soy el hilo 0 ejecutando la 0 vez.
Soy el hilo 2 ejecutando la 0 vez
Soy el hilo 4 ejecutando la 0 vez
Soy el hilo 1 ejecutando la 0 vez
Soy el hilo 3 ejecutando la 0 vez

Soy el hilo 3 ejecutando la 1 vez.
Soy el hilo 1 ejecutando la 1 vez
Soy el hilo 2 ejecutando la 1 vez
Soy el hilo 0 ejecutando la 1 vez
Soy el hilo 4 ejecutando la 1 vez

Soy el hilo 4 ejecutando la 2 vez.
Soy el hilo 1 ejecutando la 2 vez
Soy el hilo 0 ejecutando la 2 vez
Soy el hilo 3 ejecutando la 2 vez
Soy el hilo 2 ejecutando la 2 vez

y así sucesivamente. Es un poquillo urgente, así que cualquier luz arrojada será bien recibida

Muchísimas gracias!!!!

Etiquetas: hilos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:20.