elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda con hilos en C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con hilos en C  (Leído 5,249 veces)
snake_linux

Desconectado Desconectado

Mensajes: 70


Ver Perfil
Re: Ayuda con hilos en C
« Respuesta #10 en: 27 Agosto 2015, 16:08 pm »

Lo peor que podría pasar es que se mezclasen las salidas.

Pon el join al final del main, y mira si la salida es igual.

En caso de que la salida siga siendo incorrecta, comprueba si el thread se ejecuta.

He modificado un poco el código y al final se ha quedado así:

Código
  1.    #include <stdio.h>
  2.    #include <string.h>
  3.    #include <malloc.h>
  4.    #include <pthread.h>
  5.  
  6.    void * funcion(void *);
  7.     int b=0;
  8.    int main()
  9.    {
  10.  
  11.    pthread_t idhilo;
  12.      int a=5;
  13.    pthread_create(&idhilo, NULL, funcion, &a);
  14.      int y;
  15.      for(y=0;y<5;y++) printf("hilo principal\n");
  16.     printf("b vale %d", b);
  17.     pthread_join(idhilo, NULL);
  18.    }
  19.  
  20.    void * funcion(void * a) {
  21.  
  22.      b=5;
  23.  
  24.  
  25.    }

Y el valor de b me da 0, por lo que no se ejecuta el hilo hijo hasta que no llega al join...


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Ayuda con hilos en C
« Respuesta #11 en: 27 Agosto 2015, 18:14 pm »

Coloca un sleep(1) en el main para ver si el thread llega a ejecutarse antes del join.


En línea

snake_linux

Desconectado Desconectado

Mensajes: 70


Ver Perfil
Re: Ayuda con hilos en C
« Respuesta #12 en: 27 Agosto 2015, 20:42 pm »

Coloca un sleep(1) en el main para ver si el thread llega a ejecutarse antes del join.

He hecho lo que me has dicho:

Código
  1.    #include <stdio.h>
  2.    #include <string.h>
  3.    #include <malloc.h>
  4.    #include <pthread.h>
  5. #include <unistd.h>
  6.  
  7.    void * funcion(void *);
  8.     int b=0;
  9.    int main()
  10.    {
  11.  
  12.    pthread_t idhilo;
  13.      int a=5;
  14.    pthread_create(&idhilo, NULL, funcion, &a);
  15.      int y;
  16.      for(y=0;y<5;y++) printf("hilo principal\n");
  17.      sleep(1);
  18.     printf("b vale %d", b);
  19.     pthread_join(idhilo, NULL);
  20.    }
  21.  
  22.    void * funcion(void * a) {
  23.  
  24.      b=5;
  25.  
  26.  
  27.    }

El caso es que funciona, pero sigo sin entenderlo, ¿ Por que hay que hacer un segundo de pausa para que se ejecute el hilo ?.

Saludos.
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Ayuda con hilos en C
« Respuesta #13 en: 27 Agosto 2015, 21:10 pm »

Los diferentes hilos no tienen por qué ir coordinados. Si el main acaba antes que los otros threads, los otros threads se acaban al momento.
En línea

snake_linux

Desconectado Desconectado

Mensajes: 70


Ver Perfil
Re: Ayuda con hilos en C
« Respuesta #14 en: 28 Agosto 2015, 00:06 am »

Los diferentes hilos no tienen por qué ir coordinados. Si el main acaba antes que los otros threads, los otros threads se acaban al momento.

Vale muchas gracias, ya me ha quedado claro.
En línea

Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Sockets y Hilos ?? !!! AYUDA
Programación C/C++
<<<-Basura->>> 7 6,209 Último mensaje 11 Diciembre 2011, 09:42 am
por <<<-Basura->>>
ayuda con hilos
Java
luisdoros 0 1,156 Último mensaje 14 Julio 2012, 16:56 pm
por luisdoros
ayuda con hilos
Java
luisdoros 1 5,369 Último mensaje 17 Julio 2012, 02:21 am
por leogtz
[Ayuda] Hilos - basico
Programación C/C++
bemone 4 2,318 Último mensaje 20 Junio 2013, 20:55 pm
por bemone
Ayuda con hilos en C
Programación C/C++
codX 3 2,802 Último mensaje 15 Febrero 2020, 18:40 pm
por RayR
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines