Hilo (informática)

Keywords: Hilo (informática), Computador, Cpu, Hardware, Inglés, Interfaz gráfica, Lenguaje de programación, Lenguaje de programación Java, Linux

Muchos lenguajes de programación (como Java), y otros entornos de desarrollo soportan los llamados hilos o hebras (en inglés, threads). Los hilos son similares a los procesos en que ambos representan una secuencia simple de instrucciones ejecutada en paralelo con otras secuencias. Los hilos son una forma de dividir un programa en dos o más tareas que corren simultáneamente.

Un ejemplo de hilos es tener un hilo atento a la interfaz gráfica (iconos, botones, ventanas), mientras otro hilo hace una larga operación internamente. De esta manera el programa responde más ágilmente a la interacción con el usuario.

Los hilos se distinguen de los tradicionales procesos multitarea en que los procesos son típicamente independientes, llevan bastante información de estados, e interactúan sólo a través de mecanismos de comunicación dados por el sistema. Por otra parte, muchos hilos generalmente comparten otros recursos directamente. En sistemas operativos que proveen facilidades para los hilos, es más rápido cambiar de un hilo a otro dentro del mismo proceso, que cambiar de un proceso a otro. Sistemas Operativos como Windows NT, OS/2 y Linux (2.5 o superiores) han dicho tener hilos "baratos", y procesos "costosos" mientras que en otros sistemas no hay una gran diferencia.

Una ventaja de los programas multihilo es que pueden operar más rápido en sistemas de computadores con múltiples CPUs o a través de grupo de máquinas ya que los hilos del programa se prestan verdaderamente para ejecucción concurrente. En tal caso el programador necesita ser cuidadoso para evitar condiciones de carrera (problema que sucede cuando diferentes hilos o procesos alteran datos que otros también están usando), y otros comportamientos no intuitivos. Los hilos generalmente requieren reunirse para procesar los datos en el orden correcto. Es posible que los hilos requieran de operaciones atómicas para impedir que los datos comunes sean cambiados o leídos mientras estén siendo modificados. El descuido de esto puede generar estancamiento.

El uso de hilos en programación frecuentemente causa un inconsistencia de estado. Un error común es crear una variable global e invocar subprogramas que dependen de ésta.

Los Sistemas Operativos generalmente implementan hilos de dos maneras:

Multihilo preventivo: Permite al S.O. determinar cuando debe haber un cambio de contexto. La desventaja de esto es que el sistema puede hacer un cambio de contexto en un momento inadecuado.

Multihilo coperativo: Depende del mismo hilo abandonar el control cuando llega a un punto de detención lo cual puede traer problemas cuando el hilo espera un recurso para estar disponible.

El soporte de hardware para software es provisto por multihilos simultáneos. Esta característica fue introducida por Intel en el Pentium 4, bajo el nombre de Hyper-threading.

Keywords: Hilo (informática), Computador, Cpu, Hardware, Inglés, Interfaz gráfica, Lenguaje de programación, Lenguaje de programación Java, Linux