Comment vérifier qu'une chaîne est fermée sans la lire ?
Cette question se pose lorsque l'on travaille avec des chaînes dans Go, où il est essentiel de déterminer la fermeture du canal sans blocage. Dans l'exemple de code fourni, il est souhaité de supprimer un canal d'une tranche lorsque le travailleur correspondant quitte.
Le problème
Fermer un canal dans travailleur() pendant essayer d'y écrire dans le contrôleur () provoquera une panique. L'utilisation d'un mutex pour protéger cette opération conduit à une impasse. Attribuer un tampon plus grand au canal n'est pas non plus une solution viable.
Solution proposée
Pour résoudre ce problème, il est suggéré que Worker() ferme le canal lorsque ça sort. Le contrôleur() peut alors vérifier les canaux fermés et éviter d'y écrire. Cependant, il n'existe actuellement aucune fonction intégrée dans Go pour vérifier la fermeture du canal sans le lire.
Solutions de contournement possibles
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!