3 votes

Libération d'un canal dans Go

J'ai un socket TCP et 2 goroutines qui lisent et écrivent dans des flux. J'écris une goroutine qui lit les données d'un canal. Si la connexion TCP est interrompue, la routine de lecture du canal détectera une erreur et s'arrêtera.

Mais comment libérer un canal sur lequel une goroutine écrit ?

Existe-t-il une méthode comme chan.release() ou dois-je poster un paquet spécial qui dira à la goroutine de se terminer ?

5voto

Jeremy Wall Points 10643

close(ch) fermera le canal.

Si vous passez au-dessus du canal, la boucle for se terminera lorsque le canal sera fermé. val, ok := <-ch vous permet de vérifier si les canaux sont fermés. ok sera une valeur booléenne avec false si le ch est fermé true si le ch est ouvert.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X