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.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow