Unity: La 'hack' de corrutinas revelada

Fuentes: Unity's Historical Hack for Coroutines Explained

Un artículo explora el uso de corrutinas en C++ y cómo Unity, en C#, ha implementado una solución ingeniosa debido a limitaciones históricas en el soporte de await en C#. Inicialmente, las corrutinas de C++ han sido poco utilizadas debido a su complejidad y la falta de ejemplos concretos. El artículo destaca que Unity utiliza una 'hack' basada en yield return null para simular el comportamiento de await, una solución heredada de la época en que C# solo soportaba yield de estilo generador. La complejidad de implementar corrutinas en C++ para tareas complejas, como una secuencia de movimientos con estado, se vuelve considerable, requiriendo la creación de máquinas de estado complejas. El autor propone que el verdadero valor de las corrutinas reside en la gestión de secuencias de operaciones con estado, simplificando la lógica y mejorando la legibilidad del código. Se presenta un ejemplo de implementación de un 'coroutine runner' al estilo de Unity en C++, demostrando su relativa simplicidad. Finalmente, el artículo anticipa desafíos en la adopción generalizada de corrutinas en C++ debido a la necesidad de integrar con modelos de concurrencia existentes y la complejidad de co_await, sugiriendo que la solución de Unity podría ser una alternativa viable a corto plazo.