¿Qué es multihilo?
El multihilo es la capacidad de un programa o un sistema operativo de permitir más de un usuario a la vez sin necesidad de ejecutar varias copias del programa en el ordenador. El multihilo también puede gestionar múltiples peticiones de un mismo usuario.
Cada solicitud de un usuario para un programa o servicio del sistema se rastrea como un hilo con una identidad separada. A medida que los programas trabajan en nombre de la petición inicial del hilo y son interrumpidos por otras peticiones, el estado de trabajo de la petición inicial es rastreado hasta que el trabajo es completado. En este contexto, un usuario también puede ser otro programa.
Para el multihilo se necesita una gran velocidad de la unidad central de procesamiento (CPU) y una gran capacidad de memoria. Un único procesador ejecuta partes, o subprocesos, de varios programas tan rápido que parece que el ordenador está gestionando varias peticiones simultáneamente.
¿Cómo funciona el multihilo?
La enorme velocidad de procesamiento de los microprocesadores actuales hace posible el multihilo. Aunque el procesador sólo ejecuta una instrucción cada vez, los subprocesos de varios programas se ejecutan tan rápido que parece que se estén ejecutando varios programas a la vez.
Cada ciclo de la CPU ejecuta un único hilo que se enlaza con todos los demás hilos de su flujo. Este proceso de sincronización se produce tan rápidamente que parece que todos los flujos se están ejecutando al mismo tiempo. Esto puede describirse como un programa multihilo, ya que puede ejecutar muchos hilos mientras procesa.
Cada hilo contiene información sobre su relación con el programa global. En el flujo de procesamiento asíncrono, algunos hilos se ejecutan mientras otros esperan su turno. El multihilo requiere que los programadores presten especial atención para evitar condiciones de carrera y bloqueos.
Un ejemplo de multihilo
El multihilo se utiliza en muchos contextos diferentes. Un ejemplo ocurre cuando se introducen datos en una hoja de cálculo y se utilizan para una aplicación en tiempo real.
Cuando se trabaja en una hoja de cálculo, un usuario introduce datos en una celda, y puede ocurrir lo siguiente:
- puede ajustarse la anchura de las columnas
- se pueden repetir los elementos de las celdas; y
- las hojas de cálculo pueden guardarse varias veces a medida que se desarrolla el archivo.
Cada actividad se produce porque se generan y procesan múltiples hilos para cada actividad sin ralentizar el funcionamiento general de la aplicación de hoja de cálculo.
Multihilo vs multitarea vs multiprocesamiento
El multihilo difiere de la multitarea y el multiprocesamiento. Sin embargo, la multitarea y el multiprocesamiento están relacionados con el multihilo de las siguientes maneras:
- La multitarea es la capacidad de un ordenador para ejecutar dos o más programas simultáneamente. El multihilo hace posible la multitarea al dividir los programas en hilos ejecutables más pequeños. Cada hilo tiene los elementos de programación necesarios para ejecutar el programa principal, y el ordenador ejecuta cada hilo de uno en uno.
- El multiprocesamiento utiliza más de una CPU para acelerar el procesamiento general y admite la multitarea.
Multihilo vs procesamiento paralelo y procesadores multinúcleo
El procesamiento paralelo se produce cuando se utilizan dos o más CPUs para gestionar partes separadas de una tarea. En un sistema de procesamiento paralelo pueden ejecutarse varias tareas a la vez. Esto difiere del uso de un único procesador en el que sólo se ejecuta un hilo a la vez, y las tareas que componen un hilo se programan secuencialmente.
Los procesadores multinúcleo de una placa base tienen más de una unidad de procesamiento independiente, o núcleo. Se diferencian de las CPUs mononúcleo, que sólo tienen una unidad de procesamiento. Las CPU multinúcleo ofrecen mayor velocidad y capacidad de respuesta que los procesadores mononúcleo.
Los procesadores multinúcleo pueden ejecutar en paralelo tantos subprocesos como núcleos de CPU haya. Esto significa que las partes de una tarea se completan más rápido. En un sistema mononúcleo, los hilos de una aplicación multihilo no se ejecutan en paralelo. En su lugar, comparten un único núcleo de procesador.