¿Qué es un thread o hilo y en qué se diferencia de un proceso?
Publicado el 2026-10-20 por frfrand
Hilos y procesos explicados con ejemplos: memoria compartida, concurrencia, paralelismo, bloqueos y cuándo conviene usar cada uno.

Un hilo, o thread, es una unidad de ejecución dentro de un proceso. Un mismo programa puede tener varios hilos que trabajan de forma concurrente y comparten una parte importante de sus recursos, como la memoria del proceso.
La diferencia con un proceso independiente importa cuando diseñás servidores, aplicaciones de escritorio o tareas que necesitan hacer varias cosas a la vez.
El ejemplo de un restaurante
Imaginá un restaurante. Una cocina completa puede representar un proceso, mientras que varias personas trabajando dentro de esa cocina representan hilos.
Comparten ingredientes, herramientas y espacio, lo que facilita colaborar. Pero si dos personas modifican al mismo tiempo la misma lista de pedidos sin coordinarse, pueden producir errores.
Un proceso distinto se parece más a otra cocina con sus propios recursos, aunque ambas puedan comunicarse y compartir ciertos servicios.
¿Cómo se diferencian procesos e hilos?
Los procesos suelen contar con espacios de memoria aislados entre sí, mientras que los hilos de un mismo proceso comparten memoria y otros recursos.
Esa memoria compartida permite intercambiar información rápidamente, pero también introduce riesgos: dos hilos podrían modificar el mismo valor simultáneamente y dejarlo en un estado inesperado.
Por eso la programación concurrente utiliza mecanismos como locks, semáforos y colas de comunicación.
¿Concurrencia es lo mismo que paralelismo?
No exactamente. Concurrencia significa organizar varias tareas para que progresen durante un período común. Paralelismo implica ejecutar trabajo simultáneamente en recursos de procesamiento diferentes.
Una persona puede cocinar dos platos alternando pasos: hay concurrencia, pero no dos personas cocinando a la vez. Con dos cocineros podría existir paralelismo.
El sistema operativo, el lenguaje de programación y el hardware influyen en cómo se ejecutan realmente los hilos.
¿Para qué sirven los hilos?
Pueden resultar útiles en servidores que atienden múltiples operaciones, programas con interfaces que no deben quedarse bloqueadas y tareas que esperan respuestas de red o disco.
Por ejemplo, una aplicación puede mantener su interfaz disponible mientras otra parte espera descargar información. Pero no significa que cualquier trabajo se acelere por multiplicar hilos.
Las tareas que consumen intensivamente CPU pueden tener límites distintos según el lenguaje y el runtime.
¿Qué pasa con Python y el GIL?
En implementaciones habituales de CPython, existe un mecanismo denominado Global Interpreter Lock (GIL) que afecta a la ejecución simultánea de bytecode Python en configuraciones tradicionales.
Eso explica por qué crear muchos hilos en Python no suele acelerar linealmente cálculos intensivos de CPU. Para determinados trabajos se utilizan varios procesos o extensiones especializadas.
El ecosistema Python también está evolucionando con opciones de compilación sin GIL. Por eso conviene comprobar la versión y configuración que realmente utiliza tu aplicación en lugar de repetir reglas absolutas.
¿Qué es una condición de carrera?
Sucede cuando el resultado de un programa depende de un orden de ejecución que no se controla adecuadamente.
Por ejemplo, dos hilos leen que quedan diez unidades de stock y ambos intentan reservar la última. Si la lógica no está sincronizada o no utiliza transacciones correctas, se puede producir una inconsistencia.
No se soluciona necesariamente usando menos hilos: hay que diseñar bien el acceso a recursos compartidos.
¿Cuándo conviene utilizar procesos separados?
Cuando necesitás aislamiento más fuerte, aprovechar varios núcleos en determinados runtimes o ejecutar componentes con responsabilidades diferentes.
Sin embargo, los procesos también requieren comunicación y pueden consumir más recursos. La decisión depende del trabajo, el lenguaje y el nivel de aislamiento necesario.
¿Más hilos significan más rendimiento?
No siempre. Demasiados hilos pueden aumentar cambios de contexto, uso de memoria y coordinación. Si todos esperan la misma base de datos, crear cien hilos no eliminará el cuello de botella.
Conviene medir antes de aumentar concurrencia y establecer límites apropiados para cada carga.
¿Y en ArduMaker?
Los servicios desplegados dentro de un VPS de ArduMaker pueden utilizar procesos, hilos o workers según cómo esté desarrollada cada aplicación. La infraestructura proporciona recursos; elegir el modelo de concurrencia correcto forma parte del diseño del backend.
En resumen: un proceso es un entorno de ejecución y un hilo es una unidad de trabajo dentro de él. Comparten ventajas y riesgos que conviene comprender antes de intentar acelerar una aplicación.
Fuentes: Módulo threading de Python · Qué es un kernel en ArduMaker.
