Los modelos de concurrencia ofrecen formas distintas de organizar y coordinar tareas. Cada modelo define reglas de comunicación, aislamiento y sincronización que afectan el rendimiento y la complejidad de los programas. Conocerlos ayuda a elegir la herramienta adecuada para cada problema y a anticipar riesgos como condiciones de carrera o bloqueos.
En esta sección revisamos los modelos más usados: hilos, procesos, eventos, actores y memoria compartida. También comparamos sus fortalezas y debilidades para orientar decisiones de diseño.
Varios hilos comparten el mismo espacio de memoria dentro de un proceso. Permiten dividir trabajo y ejecutar partes en paralelo cuando el sistema dispone de múltiples núcleos. El acceso compartido facilita la comunicación, pero introduce riesgos de sincronización (bloqueos, condiciones de carrera). Es común usar primitivas como mutex, semáforos y locks de lectura/escritura.
Cada proceso tiene su propio espacio de direcciones. El aislamiento mejora la seguridad y la estabilidad (un fallo no derriba a los demás), a costa de mayor consumo de memoria y comunicación más costosa. La cooperación se logra mediante IPC: tuberías, sockets o memoria compartida controlada.
Un bucle de eventos central despacha tareas pequeñas (callbacks, promesas) a medida que llegan eventos externos o se completan operaciones de E/S. Es eficiente para cargas I/O-bound porque evita bloquear hilos esperando. Lenguajes y runtimes con E/S asíncrona lo usan extensivamente en servidores y frontends.
Los actores son unidades independientes que se comunican enviando mensajes asíncronos. No comparten memoria directamente; cada actor procesa su cola de mensajes de forma secuencial, lo que simplifica la razón sobre el estado interno y reduce la necesidad de locks. Es popular en sistemas distribuidos y de alta disponibilidad.
Varios hilos o procesos acceden a estructuras comunes en memoria. Permite gran velocidad cuando el acceso se diseña correctamente, pero exige sincronización fina para mantener la coherencia. Se usan mecanismos como exclusión mutua, variables atómicas y barreras de memoria.
No existe un modelo universal; muchos sistemas combinan varios: hilos para trabajo pesado, eventos para E/S, procesos para aislar fallos y actores para coordinar servicios distribuidos.