Sobes.tech
Middle+

Qui doit fermer le canal?

sobes.tech IA

Réponse de l'IA

Celui qui a créé le canal doit le fermer et ne prévoit plus d'y envoyer des données. Cela est important pour éviter la panique lors de la tentative d'envoi de données dans un canal fermé et pour que les destinataires puissent correctement déterminer la fin du flux de données.

Règles principales :

  • L'expéditeur ferme le canal lorsqu'il n'enverra plus de valeurs.
  • Les destinataires ne doivent pas fermer le canal.
  • La fermeture du canal indique aux destinataires qu'il n'y aura plus de nouvelles données.

Exemple :

func producteur(ch chan<- int) {
    for i := 0; i < 5; i++ {
        ch <- i
    }
    close(ch) // Fermeture du canal après l'envoi de toutes les données
}

func consommateur(ch <-chan int) {
    for val := range ch {
        fmt.Println(val)
    }
    // Lorsque le canal est fermé, la boucle se termine
}

func main() {
    ch := make(chan int)
    go producteur(ch)
    consommateur(ch)
}