Capítulo 10. Concurrencia

Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com

Los grandes programas suelen estar formados por muchos subprogramas más pequeños. Por ejemplo, un servidor web gestiona las peticiones de los navegadores web y sirve páginas web HTML como respuesta. Cada solicitud se gestiona como un pequeño programa.

Sería ideal que programas como éstos pudieran ejecutar sus componentes más pequeños al mismo tiempo (en el caso del servidor web, para gestionar múltiples peticiones). Progresar en más de una tarea simultáneamente se conoce como concurrencia. Go tiene un amplio soporte para la concurrencia mediante goroutines y canales.

Goroutines

Una gorutina es una función capaz de ejecutarse simultáneamente con otras funciones. Para crear una gorutina, utilizamos la palabra clave go seguida de la invocación a una función:

package main

import "fmt"

func f(n int) {
    for i := 0; i < 10; i++ {
        fmt.Println(n, ":", i)
    }
}

func main() {
    go f(0)
    var input string
    fmt.Scanln(&input)
}

Este programa consta de dos goroutines. La primera goroutine está implícita y es la propia función principal. La segunda goroutine se crea cuando llamamos a go f(0). Normalmente, cuando invocamos una función, nuestro programa ejecuta todas las sentencias de la función y luego vuelve a la línea siguiente a la invocación. Con una goroutine, volvemos inmediatamente a la línea siguiente y no esperamos a que la función se complete. Por eso ...

Get Presentación de Go now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.