← SEARCHABLE ARCHIVE
Operating System · 2026-07-14

¿Qué son los hilos?

El flujo de ejecución real del código dentro de un proceso.

INTERACTIVE READING MODE →

Los artículos escritos en este blog fueron creados con el objetivo de enseñar. Además, la información del artículo puede ser incorrecta, así que tenga cuidado.

Si un Proceso es un contenedor que contiene recursos como memoria y archivos, un Hilo es el flujo que realmente ejecuta comandos dentro de él.

Cuando se crea un proceso, generalmente se inicia un hilo principal y se pueden crear hilos adicionales si es necesario.

Los hilos en el mismo proceso comparten recursos.

Los subprocesos que pertenecen al mismo proceso comparten código, datos globales, montón y archivos abiertos. En cambio, cada hilo tiene su propia pila, estado de registro y ubicación de ejecución.

un proceso
┌──────────────────────────┐
│ Código / Datos / Intercambio de montón │
├────────────┬─────────────┤
│ Thread A   │ Thread B    │
│ Stack A    │ Stack B     │
│ Register A │ Register B  │
└────────────┴─────────────┘

La razón por la que dos subprocesos pueden usar la dirección del mismo objeto es porque comparten el montón. Por otro lado, las variables locales de las funciones se crean básicamente en la pila de cada hilo, por lo que están separadas entre sí.

¿Por qué utilizar hilos?

Por ejemplo, en un juego, un subproceso de trabajo puede realizar la navegación de rutas o la carga de recursos mientras el subproceso principal maneja las entradas y las actualizaciones de la pantalla. Si tiene varios núcleos de CPU, es posible que se ejecuten diferentes subprocesos simultáneamente.

std::thread worker([]()
{
    LoadResources();
});

UpdateGame();
worker.join();

join()hace que el hilo actual espere hasta que finalice el hilo de trabajo.

Diferencia entre proceso e hilo

Los procesos están básicamente aislados en la memoria, por lo que es difícil que los problemas en un proceso se propaguen directamente a otros procesos. Sin embargo, los costos de generación y comunicación son relativamente elevados.

Dado que los subprocesos comparten la misma memoria, es fácil intercambiar datos y es relativamente liviano. En cambio, el acceso incorrecto al puntero o los errores de sincronización pueden destruir todo el mismo proceso.

Proceso: Unidad de propiedad y aislamiento de recursos.
Tema: Unidad de flujo ejecutada por CPU

Tener más hilos no necesariamente hace que las cosas sean más rápidas. Si el costo de dividir tareas, esperar bloqueos, conflictos de caché y cambio de contexto excede el beneficio computacional, en realidad puede disminuir la velocidad.