Go
Goroutines
Buscar..
Introducción
Un goroutine es un hilo ligero administrado por el tiempo de ejecución Go.
ir f (x, y, z)
comienza una nueva carrera de goroutine
f (x, y, z)
La evaluación de f, x, y, z ocurre en el goroutine actual y la ejecución de f ocurre en el nuevo goroutine.
Los goroutines se ejecutan en el mismo espacio de direcciones, por lo que el acceso a la memoria compartida debe estar sincronizado. El paquete de sincronización proporciona primitivas útiles, aunque no las necesitarás mucho en Go, ya que hay otras primitivas.
Referencia: https://tour.golang.org/concurrency/1
Programa Básico Goroutines
package main
import (
"fmt"
"time"
)
func say(s string) {
for i := 0; i < 5; i++ {
time.Sleep(100 * time.Millisecond)
fmt.Println(s)
}
}
func main() {
go say("world")
say("hello")
}
Un goroutine es una función que es capaz de ejecutarse simultáneamente con otras funciones. Para crear un goroutine usamos la palabra clave go
seguido de una invocación de 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)
}
Generalmente, la llamada a la función ejecuta todas las declaraciones dentro del cuerpo de la función y regresa a la siguiente línea. Pero, con los goroutines, regresamos inmediatamente a la siguiente línea ya que no se espera a que se complete la función. Por lo tanto, se incluye una llamada a una función Scanln
, de lo contrario, el programa se ha salido sin imprimir los números.