Técnicamente, una Fiber (también conocida como 'coroutine' o 'green thread' en algunos contextos) es una unidad de ejecución que es programada y gestionada enteramente por el código de la aplicación, en lugar de por el sistema operativo. A diferencia de los hilos (threads) del sistema operativo, que son preemptivos y gestionados por el kernel, las Fibers son cooperativas: deben ceder explícitamente el control para que otra Fiber pueda ejecutarse. Esto implica que el cambio de contexto entre Fibers es mucho más rápido y de menor sobrecarga que el cambio entre hilos, ya que no requiere transiciones al modo kernel ni la intervención del planificador del sistema operativo. Cada Fiber tiene su propia pila de ejecución, pero comparten el mismo espacio de direcciones y recursos del hilo del sistema operativo que las contiene.
Las Fibers se implementan en el mundo real en varios lenguajes y frameworks para habilitar modelos de concurrencia eficientes. Un ejemplo prominente es Ruby con 'Fibers', que permiten la creación de rutinas que pueden pausarse y reanudarse. En C++, las librerías como Boost.Context o Folly de Meta proporcionan primitivas para implementar coroutines o Fibers. Lenguajes como Go utilizan 'goroutines', que son una forma de green threads multiplexados sobre hilos del sistema operativo, gestionados por el runtime de Go. Python, con sus 'async/await' y 'coroutines', también ofrece un modelo de concurrencia cooperativa similar, aunque su implementación subyacente puede variar.
Para un Arquitecto de Sistemas, las Fibers son importantes porque ofrecen una alternativa de alto rendimiento para la concurrencia en escenarios donde la sobrecarga de los hilos del sistema operativo es prohibitiva. Permiten construir sistemas altamente concurrentes con un control muy fino sobre la programación, lo que puede ser crucial para aplicaciones de baja latencia o alta densidad de conexiones (ej. servidores web, proxies, bases de datos). El trade-off principal es la complejidad: la programación cooperativa requiere que el desarrollador sea consciente de cuándo y dónde ceder el control, lo que puede llevar a problemas de 'starvation' si una Fiber no cede el control. Sin embargo, cuando se usan correctamente, las Fibers pueden reducir significativamente el consumo de memoria y CPU en comparación con un modelo basado puramente en hilos del sistema operativo, mejorando la escalabilidad y la eficiencia de los recursos.