Sobes.tech
Junior — Middle

Comment la goroutine sait-elle qu'un signal de fin lui a été transmis via le contexte?

sobes.tech IA

Réponse de l'IA

La goroutine reçoit le signal de fin via un contexte à l'aide d'un canal, qui fournit l'objet context.Context. La méthode Done() est généralement utilisée, qui retourne un canal se fermant lors de l'annulation du contexte. La goroutine peut écouter ce canal dans une boucle ou un select et réagir à sa fermeture, ce qui indique un signal de fin ou d'annulation de l'opération.

Exemple:

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

go func() {
    select {
    case <-ctx.Done():
        // Le contexte a été annulé, fin de l'exécution
        fmt.Println("Goroutine terminée")
        return
    // autres cas
    }
}()

// plus tard, on appelle cancel() pour signaler la fin
cancel()