Las gorutinas son un concepto central en el lenguaje de programación Go, también conocido como Golang. Permiten la ejecución concurrente dentro de un mismo proceso de manera eficiente y fácil de manejar. A diferencia de los hilos tradicionales en otros lenguajes de programación, las gorutinas son más ligeras en cuanto a uso de memoria y cambio de contexto, lo que las hace ideales para operaciones que involucran alta concurrencia y paralelismo.
Una gorutina se inicia simplemente precediendo una llamada de función con la palabra clave go. Cuando se hace esto, la función se ejecuta de manera concurrente como una gorutina. A continuación se muestra un ejemplo básico de cómo iniciar una gorutina en Go:
package main
import ""fmt""
func saluda() {
fmt.Println(""¡Hola mundo!"")
}
func main() {
go saluda()
}
En este ejemplo, saluda() se ejecutará de manera concurrente, y el programa principal continuará su ejecución sin esperar a que saluda() termine. Esto es útil para realizar múltiples tareas al mismo tiempo, como manejar múltiples conexiones de red o realizar operaciones de entrada/salida sin bloquear el programa principal.
El verdadero poder de las gorutinas se manifiesta cuando se combinan con canales, que son tipos de datos especiales proporcionados por Go para la comunicación segura entre gorutinas. Los canales permiten enviar y recibir valores entre gorutinas de forma sincronizada. Aquí un ejemplo:
package main
import ""fmt""
func contar(prefix string, c chan<int>) {
for i := 1; i <= 5; i++ {
c <- i
fmt.Println(prefix, i)
}
close(c)
}
func main() {
c := make(chan int)
go contar(""gorutina:"", c)
for n := range c {
fmt.Println(""En main:"", n)
}
}
En este código, contar() envía números a través del canal c, y el bucle for en main() los recibe. Cada número es enviado y recibido de manera sincronizada entre la gorutina y el programa principal.
En resumen, las gorutinas en Go son una forma poderosa y eficiente de manejar tareas concurrentes en programas, permitiendo un diseño más limpio y una mejor escalabilidad sin el overhead asociado con los hilos tradicionales. Su integración con canales proporciona un modelo robusto para la comunicación entre gorutinas, haciendo que Go sea muy atractivo para aplicaciones que requieren alta concurrencia.
Las gorutinas son un concepto central en el lenguaje de programación Go, también conocido como Golang. Permiten la ejecución concurrente dentro de un mismo proceso de manera eficiente y fácil de manejar. A diferencia de los hilos tradicionales en otros lenguajes de programación, las gorutinas son más ligeras en cuanto a uso de memoria y cambio de contexto, lo que las hace ideales para operaciones que involucran alta concurrencia y paralelismo.
Una gorutina se inicia simplemente precediendo una llamada de función con la palabra clave
go
. Cuando se hace esto, la función se ejecuta de manera concurrente como una gorutina. A continuación se muestra un ejemplo básico de cómo iniciar una gorutina en Go:En este ejemplo,
saluda()
se ejecutará de manera concurrente, y el programa principal continuará su ejecución sin esperar a quesaluda()
termine. Esto es útil para realizar múltiples tareas al mismo tiempo, como manejar múltiples conexiones de red o realizar operaciones de entrada/salida sin bloquear el programa principal.El verdadero poder de las gorutinas se manifiesta cuando se combinan con canales, que son tipos de datos especiales proporcionados por Go para la comunicación segura entre gorutinas. Los canales permiten enviar y recibir valores entre gorutinas de forma sincronizada. Aquí un ejemplo:
En este código,
contar()
envía números a través del canalc
, y el buclefor
enmain()
los recibe. Cada número es enviado y recibido de manera sincronizada entre la gorutina y el programa principal.En resumen, las gorutinas en Go son una forma poderosa y eficiente de manejar tareas concurrentes en programas, permitiendo un diseño más limpio y una mejor escalabilidad sin el overhead asociado con los hilos tradicionales. Su integración con canales proporciona un modelo robusto para la comunicación entre gorutinas, haciendo que Go sea muy atractivo para aplicaciones que requieren alta concurrencia.