Comment le travail et la synchronisation des threads d'exécution sont-ils assurés en Golang?
sobes.tech IA
Réponse de l'IA
En Go, pour travailler avec des threads d'exécution, on utilise des goroutines, qui sont des threads légers gérés par le runtime de Go. Les goroutines sont lancées avec le mot-clé go avant l'appel d'une fonction, ce qui permet de l'exécuter de manière asynchrone.
Pour synchroniser les goroutines, on utilise des canaux (channels) et des primitives du paquet sync (par exemple, Mutex, WaitGroup). Les canaux assurent un échange sécurisé de données entre les goroutines et permettent de les synchroniser.
Exemple d'utilisation de goroutines et de canaux :
package main
import (
"fmt"
"time"
)
func worker(ch chan string) {
time.Sleep(time.Second)
ch <- "prêt"
}
func main() {
ch := make(chan string)
go worker(ch)
msg := <-ch
fmt.Println("Travail de la goroutine :", msg)
}
Ici, la goroutine principale lance worker dans une goroutine séparée, qui après un délai envoie un message dans le canal. La goroutine principale attend de recevoir le message du canal, ce qui assure la synchronisation.