Pourriez-vous expliquer ce que signifie lancer et gérer des goroutines en langage Go?
sobes.tech IA
Réponse de l'IA
Dans le langage Go, les goroutines sont des threads d'exécution légers gérés par le runtime de Go. Lancer une goroutine permet d'exécuter une fonction ou une méthode en parallèle avec le thread principal, sans le bloquer.
Pour lancer une goroutine, on utilise le mot-clé go avant l'appel de la fonction:
func sayHello() {
fmt.Println("Bonjour depuis la goroutine")
}
func main() {
go sayHello() // lancement de la goroutine
// le thread principal continue de fonctionner
time.Sleep(time.Second) // pour que la goroutine ait le temps de s'exécuter
}
La gestion des goroutines inclut la synchronisation et la coordination de leur travail. Pour cela, on utilise souvent des canaux (chan), qui permettent de transmettre des données entre goroutines de manière sûre et efficace.
Exemple d'utilisation d'un canal pour attendre la fin d'une goroutine:
func worker(done chan bool) {
fmt.Println("Travail de la goroutine")
done <- true // signal de fin
}
func main() {
done := make(chan bool)
go worker(done)
<-done // attente du signal
fmt.Println("Goroutine terminée")
}
Ainsi, lancer et gérer des goroutines est une façon d'organiser l'exécution concurrente du code en utilisant des threads légers et des mécanismes de synchronisation.