unity startcoroutine monobehaviour corrutinas terminology coroutine

terminology - monobehaviour - unity ienumerator startcoroutine



¿Qué es una corrutina? (5)

Coroutine es similar a la subrutina / hilos. La diferencia es que una vez que un llamador invoca una subrutina / subprocesos, nunca volverá a la función de llamante. Pero una coroutine puede regresar a la persona que llama después de ejecutar algunos códigos, lo que permite que la persona que llama ejecute parte de su propio código y regrese al punto de corrutina donde detuvo la ejecución y continúa desde allí. es decir. Una coroutine tiene más de una entrada y salida

¿Qué es una corrutina? ¿Cómo están relacionados con la concurrencia?


Corutinas y concurrencia son en gran parte ortogonales. Las corutinas son una estructura de control general mediante la cual el control de flujo se transfiere cooperativamente entre dos rutinas diferentes sin retorno.

La declaración de ''rendimiento'' en Python es un buen ejemplo. Crea una corutina. Cuando se encuentra el ''rendimiento'', se guarda el estado actual de la función y se devuelve el control a la función de llamada. La función de llamada puede entonces transferir la ejecución nuevamente a la función de rendimiento y su estado se restaurará al punto donde se encontró el ''rendimiento'' y la ejecución continuará.


En una nota diferente, en python gevent library es una biblioteca de red basada en coroutine que le ofrece características de subprocesos como solicitudes de red asincrónicas, sin la sobrecarga de crear y destruir subprocesos. La biblioteca de coroutine utilizada es greenlet .


Desde Programación en Lua , sección " Coroutines ":

Una coroutine es similar a un hilo (en el sentido de multihilo): es una línea de ejecución, con su propia pila, sus propias variables locales y su propio puntero de instrucción; pero comparte variables globales y casi todo lo demás con otras corutinas. La principal diferencia entre hilos y corutinas es que, conceptualmente (o literalmente, en una máquina multiprocesador), un programa con hilos ejecuta varios hilos en paralelo. Las corutinas, por otro lado, son colaborativas: en un momento dado, un programa con corrutinas ejecuta solo una de sus corutinas, y esta corutina en ejecución suspende su ejecución solo cuando solicita explícitamente su suspensión.

Entonces el punto es: las Corutinas son "colaborativas". Incluso en el sistema multinúcleo, solo hay una corrutina ejecutándose en un momento dado (pero varios subprocesos pueden ejecutarse en paralelo). No hay apropiaciones preventivas entre corutinas, la corrutina en ejecución debe renunciar a la ejecución de forma explícita.

Para " concurrency ", puede referirse a la slide Rob Pike:

La concurrencia es la composición de cálculos que se ejecutan de forma independiente.

Entonces, durante la ejecución de la corutina A, pasa el control a la corutina B. Luego, después de un tiempo, la corotina B pasa el control nuevamente a la corutina A. Dado que hay dependencia entre corutinas, y deben ejecutarse en tándem, las dos corutinas no son concurrenciadas .


  • Coroutines son excelentes funciones disponibles en Kotlin Language
  • Las corutinas son una nueva forma de escribir código asíncrono sin bloqueo (y mucho más)
  • Coroutine son hilos ligeros. Un hilo de peso ligero significa que no se asigna en el hilo nativo, por lo que no requiere el cambio de contexto en el procesador, por lo que son más rápidos.
  • no se asigna en el hilo nativo
  • Coroutines y los hilos son multitarea. Pero la diferencia es que los hilos son administrados por el sistema operativo y coroutines por los usuarios.

Básicamente, hay dos tipos de Corutinas:

  1. Sin atontamiento
  2. Apilable

Kotlin implementa corotines sin apilamiento, es decir que las corutinas no tienen pila propia, por lo que no se asignan en el hilo nativo.

Estas son las funciones para comenzar la corutina:

launch{} async{}

Puedes aprender más desde aquí:

https://www.kotlindevelopment.com/deep-dive-coroutines/

https://blog.mindorks.com/what-are-coroutines-in-kotlin-bf4fecd476e9