Sobes.tech
Junior — Middle

Quels événements et signaux peuvent être utilisés pour interagir avec les goroutines en langage Go?

sobes.tech IA

Réponse de l'IA

Dans le langage Go, les mécanismes principaux suivants sont utilisés pour interagir avec les goroutines :

  1. Canaux (channels) — le moyen principal de transmettre des données et des signaux entre les goroutines. À travers les canaux, on peut envoyer et recevoir des valeurs, ce qui permet de synchroniser le travail.
ch := make(chan int)
go func() {
    ch <- 42 // envoi de valeur
}()
val := <-ch // réception de valeur
  1. Contexte (context.Context) — utilisé pour gérer la durée de vie des goroutines, annuler des opérations et transmettre des signaux d'annulation.
ctx, cancel := context.WithCancel(context.Background())
go func(ctx context.Context) {
    select {
    case <-ctx.Done():
        // gestion de l'annulation
    }
}(ctx)
cancel() // signal d'annulation
  1. sync.WaitGroup — pour attendre la fin d'un groupe de goroutines.

  2. Signaux du système d'exploitation — via le paquet os/signal, il est possible d'intercepter les signaux système et de les transmettre aux goroutines pour une terminaison correcte.

Ainsi, les "événements" principaux pour l'interaction sont les opérations d'envoi/réception via les canaux, l'annulation via le contexte et les signaux système.