Sobes.tech
Junior — Middle

¿En qué casos una goroutine termina su ejecución y transfiere el control a otra?

sobes.tech AI

Respuesta de la IA

En Go, la goroutine deja de ejecutarse y transfiere el control a otra goroutine en los siguientes casos:

  • Cuando la goroutine llama explícitamente a una función que la bloquea (por ejemplo, leer desde un canal si el canal está vacío).
  • Al usar la palabra clave runtime.Gosched(), que cede voluntariamente el CPU a otras goroutines.
  • Cuando la goroutine termina su función (regresa de la función), deja de ejecutarse.

El planificador de goroutines de Go cambia automáticamente la ejecución entre goroutines, asegurando la concurrencia. Por ejemplo, cuando se bloquea en operaciones de entrada/salida o se espera datos de un canal, la goroutine actual se suspende y se transfiere el control a otra.