En Go, il est possible d'effectuer des opérations d'E/S non bloquantes sur les canaux à l'aide de l'instruction select. Cependant, une question courante se pose lorsqu'il s'agit d'un canal d'envoi tamponné (chan
Une approche courante consiste à vérifier la longueur ou la capacité des canaux avant d'envoyer ou de recevoir. Cependant, cela n'est pas fiable car l'état du canal peut changer entre la vérification et l'opération suivante :
if len(r) > 0 {
// Optionally execute other code
r La solution : cas par défaut avec délai
Pour résoudre ce problème, vous pouvez utiliser une instruction select avec un cas par défaut qui inclut un court délai. Cela évite une utilisation excessive du processeur tout en vous permettant de réessayer l'opération si les deux canaux ne sont pas prêts :
s := make(chanEn ajoutant le cas par défaut, le programme ne bloquera que pendant une courte période si les deux canaux ne sont pas prêts, permettant ainsi aux ressources CPU d'être libérées en attendant qu'un canal soit disponible.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3