Vérification des chaînes fermées sans les lire
Dans les situations où vous devez déterminer si une chaîne est fermée sans la lire, il existe actuellement, aucun moyen direct de le faire dans Go. L'exemple de code fourni par @Jimt sert d'illustration pratique du mode Workers et Controller. Cependant, il est confronté à un problème lorsqu'il tente de supprimer un canal de travail de la tranche de travail après la sortie du travailleur.
Comprendre le problème
Fermer le canal de travail directement depuis dans worker() provoquerait une panique lorsque le contrôleur tenterait d'y écrire, car l'écriture sur un canal fermé n'est pas autorisée. D'un autre côté, l'utilisation d'un mutex pour empêcher l'accès simultané entraînerait un blocage car le travailleur ne lit pas sur le canal et l'écriture sera bloquée.
Solutions potentielles
Conclusion
L'absence d'un mécanisme permettant de vérifier directement si un canal est fermé sans le lire est considéré comme une limitation dans certains scénarios. Bien que des solutions de contournement existent, elles ne constituent peut-être pas des solutions optimales. L'implémentation d'une fonction permettant de vérifier les canaux fermés pourrait être un ajout précieux aux futures versions du langage de programmation Go.
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!