DEV Community

Maxime Guilbert
Maxime Guilbert

Posted on • Edited on

Qu'est-ce qu'une Go Routine?

#go

Quand on fait du développement en Go, surtout quand on a le besoin de faire des traitements rapides, on peut avoir besoin de paralléliser certains bouts de traitements. Et c'est là que les Go Routines sont utiles.

Définition

Une Go Routine est une méthode qui est exécutée sur un thread en parallèle du thread principal.

Comment l'utiliser ?

1. Déclarer la fonction qui pourra être utilisée par une Go Routine

func toto(from string) {
    for i := 0; i < 3; i++ {
        fmt.Println(from, ":", i)
    }
}
Enter fullscreen mode Exit fullscreen mode

Comme vous pouvez le constater, il ne s'agit que d'une déclaration de méthode "classique" sans rien de particulier.

2. Appeler la fonction en tant que Go Routine

Pour appeler la fonction en tant que Go Routine, il vous suffit de rajouter go avant la déclaration de l'appel à la méthode.

// Appel de la fonction au travers d'une go routine
go toto("goroutine")

// Appel direct de la fonction toto
toto("direct")
Enter fullscreen mode Exit fullscreen mode

3. Résultat

Dans l'exemple précédent, on voit que la Go Routine est appelée avant l'appel direct. Voyons ce que ça donne.

direct : 0
direct : 1
direct : 2
goroutine : 0
goroutine : 1
goroutine : 2
Enter fullscreen mode Exit fullscreen mode

On peut voir que "direct" a été appelé avant "goroutine", démontrant le fait que le traitement dans la Go Routine a été fait en parallèle. En effet, l'appel à "direct" n'a pas attendu que "goroutine" soit terminé pour s'exécuter.

4. Fonctions anonymes

Avec les Go Routines, on peut créer des fonctions anonymes. Fonction qui n'ont pas de nom et qui ne peuvent être utilisées en dehors de l'endroit où elles ont été déclarées.

go func(msg string) {
        fmt.Println(msg)
    }("test")
Enter fullscreen mode Exit fullscreen mode

L'exemple ci-dessus déclare une fonction qui attend un message à afficher, et le paramètre utilisé pour appeler cette fonction est "test".


Conclusion

En conclusion, on peut voir que les Go Routines sont un moyen simple d'effectuer des traîtements en parallèle avec Go. Dans un prochain article, on verra avec quoi on peut les utiliser pour avoir quelque chose de très puissant sans outils externes!

J'espère que ça vous aidera! 🍺


Vous voulez me supporter?

Buy Me A Coffee

Top comments (0)