Go como usar Goroutines

By | 04/23/2018

Un Goroutine es un hilo de ejecución ligero manejado por GO.

Gorutine son funciones o métodos que se ejecutan simultáneamente.
Podemos entenderlas como “hilos ligeros” con un costo mucho menor que un hilo tradicional.

Supongamos que tienes dos funciones

func numbers() {
	for i := 0; i < 5; i++ {
		fmt.Printf("%d ", i)
		time.Sleep(100 * time.Millisecond)
	}
}

func characters() {
	for i := 'a'; i <= 'f'; i++ {
		fmt.Printf("%c ", i)
		time.Sleep(200 * time.Millisecond)
	}
}

Si llamas a estas funciones de la forma habitual tendrías este resultado.

func main() {

	// without goroutine
	numbers()

	characters()

	fmt.Scanln() // wait, press a key
	fmt.Println("done")
}

Observa cómo la ejecución de estas funciones es síncrona

go run rutine.go
0 1 2 3 4 a b c d e f
done

Como implementar Goroutine

Si deseas invocar estas funciones en una Goroutine debes usar “go” por delante de la llamada a la función de esta manera:

func main() {
	// goroutine
	go numbers()

	go characters()

	fmt.Scanln() // wait, press a key
	fmt.Println("done")
}

En la salida se ve como se van ejecutando ambas funciones de manera simultánea, lo que evidencia esta ejecución en paralelo de ambas rutinas.

go run rutine.go
0 a 1 2 b 3 c 4 d e f

Conclusión:

Cuando ejecutas este código sin Goroutine vemos que las funciones se ejecutan una primero y luego la otra, sincrónicamente.
Utilizando Goroutine, anteponiendo “go” por delante a la llamada, puedes observar que la salida de las funciones se va intercalando mostrando que se ejecutan al mismo tiempo.

Compartir esto:

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *