La era de la informatica

Sunday, February 25, 2007

Hilos en Win32

Hola, cuando subi el problema 2 al blog escribi que si me daba tiempo escribiria el codigo equivalente en Windows. Pero me he dado cuenta de que en windows ambos codigos presentados en el problema 2 serían tan diferentes, que no tendría sentido presentar un problema así. Esto viene de que en Windows la API de Procesos y de Hilos es distinta que en UNIX, y además funciona de diferente manera. Por ejemplo, en unix los procesos creados por otros procesos no se eliminan si el proceso "padre" termina, pero en windows si. Lo mismo sucede con los hilos, si el proceso que generó los hilos termina, los hilos creados que no hayan terminado de ejecutarse mueren automaticamente. Pero hay muchas mas diferencias. Estas son algunas de las funciones que se pueden usar para crear procesos e hilos en Windows:
- System (...) : Ejecuta un comando
- Exec (...): Exec y sus variantes (execv ...) realizan exactamente lo mismo que exec en UNIX.
- Spawn (...): Similar a exec.
- CreateProcess(...): Ejecuta un comando paralelamente al proceso que llama a la funcion. Además permite compartir memoria entre ambos procesos. Sería el equivalente de hacer fork y exec seguidos en unix.
- CreateThread(...): Crea un hilo independiente que se ejecuta en el mismo espacio de direcciones del proceso que lo crea (como en cualquier implementacion de hilos), lo que hace que se comparta la memoria y el codigo del programa. Esta funcion fuerza a especificar una funcion desde donde va a empezar a ejecutarse el hilo.

Como veis esta es la forma de "jugar" con procesos e hilos en Windows. Aquí os dejo un código parecido a los del problema 2, que ilustra la creación y manejo de Threads (Hilos) en Windows:
Thread Win32 API

Esta librería de funciones puede ser un punto de partida para modificar el shell de UNIX que cree hace 2 semanas y hacer uno similar pero para Windows. ¿Se os ocurre como?

0 Comments:

Post a Comment

<< Home