Thread o Hilos
1. Introducción
Una thread es un único flujo de control dentro de un programa. Algunas veces es llamado contexto de ejecución porque cada thread debe tener sus propios recursos, como el contexto de ejecución. Sin embargo, toda thread en un programa comparte muchos recursos, tales como espacio de memoria y archivos abiertos. Threads también son llamadas procesos livianos (lightweight process).
2. Desarrollo
En lugar de crear procesos "hijos" de un proceso "padre", el proceso padre puede crear threads o hilos. Los hilos se comportan como un proceso cualquiera, pero sobrecargan menos el sistema, por esta razón es preferible utilizar hilos en vez de algún proceso hijo.
Se deben de crear los hilos con una lógica necesaria de coordinación o sincronización de la ejecución de otros hilos creados por el hilo padre. Ejecutar 2 o más hilos simultáneamente puede llegar a ocasionar una "condición de carrera".
La condición de carrera se refiere a ejecutar una serie de mandatos en algún programa de forma intercalada y arbitraria, para llevar acabo una ejecución no determinista. Se debe de crear una variable que cumpla la función de un contador la cual sea compartida entre dos hilos concurrentes para evitar las condiciones de carrera.
Las condiciones de carrera se pueden evitar con la implementación de la "exclusión mutua" dentro del código, para poder asegurar que los mandatos solo se ejecuten en un único hilo en determinado momento. A ester segmento de código se le denomina como "región critica".
Los programas que implementan los hilos, se les denomina "multi-threaded o multihilo", los programas multihilo que evitan las condiciones de carrera se les denomina como "thread-safe".
La gran mayoría de las herramientas que dan soporte a aplicaciones de red utilizan programación multihilo internamente.
Se deben de crear los hilos con una lógica necesaria de coordinación o sincronización de la ejecución de otros hilos creados por el hilo padre. Ejecutar 2 o más hilos simultáneamente puede llegar a ocasionar una "condición de carrera".
La condición de carrera se refiere a ejecutar una serie de mandatos en algún programa de forma intercalada y arbitraria, para llevar acabo una ejecución no determinista. Se debe de crear una variable que cumpla la función de un contador la cual sea compartida entre dos hilos concurrentes para evitar las condiciones de carrera.
Las condiciones de carrera se pueden evitar con la implementación de la "exclusión mutua" dentro del código, para poder asegurar que los mandatos solo se ejecuten en un único hilo en determinado momento. A ester segmento de código se le denomina como "región critica".
Los programas que implementan los hilos, se les denomina "multi-threaded o multihilo", los programas multihilo que evitan las condiciones de carrera se les denomina como "thread-safe".
La gran mayoría de las herramientas que dan soporte a aplicaciones de red utilizan programación multihilo internamente.
3. Conclusiones
Es mucho mejor utilizar hilos en vez de crear procesos que crean mas procesos. Los hilos (si son bien implementados) ayudan a sincronizar el sistema, reducen el consumo de memoria, procesan más información mas rápido y se puede eliminar un hilo mucho mas fácil que un proceso hijo.
Por estos motivos los hilos son una mejor y más eficiente solución que crear múltiples procesos.
Por estos motivos los hilos son una mejor y más eficiente solución que crear múltiples procesos.
4. Referencias
M. Liu. (2004). Computación Distribuida Fundamentos y Aplicaciones. Madrid: Pearson.
No comments:
Post a Comment