• Domingo 15 de Diciembre de 2024, 03:05

Autor Tema:  ¿cómo Hacer Dos Líneas De Ejecución?  (Leído 1514 veces)

SkaJaf

  • Miembro activo
  • **
  • Mensajes: 37
    • Ver Perfil
¿cómo Hacer Dos Líneas De Ejecución?
« en: Martes 13 de Junio de 2006, 12:34 »
0
Hola a todos, mi duda consiste, en que tengo un programa implementado, pero si selecciono determinadas opciones el programa parece que se cuelga, como si no respondiera, pero en realidad sigue funcionando bien, porque cuando termina de ejecutar esta opción todo va bien.

¿Alguien sabe como resolverlo?

Creo que se podría hacer con thread, lanzar dos thread, uno para el programa principal y otro para esta opción, pero no se cómo hacerlo.

Gracias

tonilope

  • Miembro activo
  • **
  • Mensajes: 51
    • Ver Perfil
Re: ¿cómo Hacer Dos Líneas De Ejecución?
« Respuesta #1 en: Martes 13 de Junio de 2006, 16:46 »
0
Puedes crear tantos hilos como necesites en tu programa.

Aunque lo tienes todo explicado en la MSDN te lo explico por encima:

Código: Text
  1.  
  2. #include <windows.h>
  3.  
  4. /* Pones el resto de includes, defines, etc...
  5. .
  6. .
  7. .
  8. ETC...*/
  9.  
  10. DWORD WINAPI funcion_hilo_secundario(void *);
  11.  
  12. int main(int argc, char **argv)
  13. {
  14.  
  15. HANDLE h_HandleHilo;
  16. DWORD identificador_hilo;
  17. int numero;
  18.  
  19. //Creamos el hilo secundario
  20. h_HandleHilo=CreateThread(NULL,0,funcion_hilo_secundario,(void*)&numero,0,&identificador_hilo);
  21.  
  22.  
  23. printf("\n\nEstoy en el hilo principal y el secundario me ha mandado un %d", numero);
  24.  
  25. /*Continuamos con el hilo principal
  26. .
  27. .
  28. .
  29. ETC...*/
  30.  
  31.  
  32. return 0;
  33. }
  34.  
  35. DWORD WINAPI funcion_hilo_secundario(void *parametro)
  36. {
  37.  
  38. //Aqui pones lo que quieres que se ejecute en el hilo secundario
  39.  
  40. int *numero;
  41.  
  42. numero=(int*)parametro;
  43.  
  44. printf("\n\nEstoy en el hilo secundario y el hilo principal me ha mandando un: %d", *numero);
  45.  
  46. *numero=8;
  47.  
  48. return 0;
  49.  
  50. }
  51.  
  52.  
  53.  

El CUARTO parámetro de la función CreateThread puede ser NULL si NO le mandas ningún parámetro al hilo que creas. (Si necesitas mandarle más de un parámetro al hilo secundario, mándale UNA estructura).
El parámetro que le envías al hilo secndario es por referencia para poder comunicar el hilo principal con él.

Cuando termina funcion_hilo_secundario() se destruye el hilo secundario (aunque hay formas de destruir un hilo antes de que termine de forma "natural").

El hilo principal TIENE que ser el último en terminar.

MUCHA más información en -> http://msdn.microsoft.com/library/default....ing_threads.asp

Salu2 ;)

SkaJaf

  • Miembro activo
  • **
  • Mensajes: 37
    • Ver Perfil
Re: ¿cómo Hacer Dos Líneas De Ejecución?
« Respuesta #2 en: Martes 13 de Junio de 2006, 19:36 »
0
Muchas gracias!!!