Sobes.tech
Middle — Middle+

Comment peut-on contrôler l'exécution du programme et gérer son état pendant son fonctionnement?

sobes.tech IA

Réponse de l'IA

En Go, pour contrôler l'exécution du programme et gérer son état pendant son fonctionnement, on utilise souvent :

  • Goroutines — des threads légers permettant d'exécuter des fonctions en parallèle.
  • Canaux — pour la synchronisation et l'échange de données entre goroutines.
  • Contexte (context.Context) — pour gérer la durée de vie des opérations, les annulations et la transmission de délais.
  • Package sync — pour gérer l'accès concurrent aux ressources (Mutex, WaitGroup, etc.).

Exemple d'utilisation du contexte pour annuler une opération :

ctx, cancel := context.WithCancel(context.Background())

go func() {
    // après 2 secondes, on annule le contexte
    time.Sleep(2 * time.Second)
    cancel()
}()

select {
case <-time.After(5 * time.Second):
    fmt.Println("Opération terminée")
case <-ctx.Done():
    fmt.Println("Opération annulée")
}

Ainsi, la gestion de l'état du programme est réalisée par la coordination des goroutines, l'utilisation du contexte pour les annulations et la synchronisation, ainsi que par des mécanismes de verrouillage et de signaux.