Go
Goroutines
Recherche…
Introduction
Une goroutine est un thread léger géré par le runtime Go.
aller f (x, y, z)
commence un nouveau goroutine en cours d'exécution
f (x, y, z)
L'évaluation de f, x, y et z se produit dans le goroutine actuel et l'exécution de f se produit dans le nouveau goroutine.
Les Goroutines s'exécutent dans le même espace d'adressage, de sorte que l'accès à la mémoire partagée doit être synchronisé. Le package de synchronisation fournit des primitives utiles, bien que vous n'en ayez pas besoin beaucoup dans Go car il existe d'autres primitives.
Référence: https://tour.golang.org/concurrency/1
Programme de base de 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")
}
Une goroutine est une fonction capable de fonctionner simultanément avec d'autres fonctions. Pour créer une goroutine, nous utilisons le mot go
clé go
suivi d'une invocation de fonction:
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)
}
En général, l'appel de fonction exécute toutes les instructions à l'intérieur du corps de la fonction et retourne à la ligne suivante. Mais, avec les goroutines, nous retournons immédiatement à la ligne suivante, car elle n'attend pas la fin de la fonction. Ainsi, un appel à une fonction Scanln
est inclus, sinon le programme a été quitté sans imprimer les chiffres.