détectant un canal tamponné complet
dans Go, les canaux tamponnés ont une limite de capacité maximale. Lorsqu'un canal tamponné atteint sa capacité, l'envoi d'objets supplémentaires entraînera généralement le blocage de l'opération. Cependant, il existe des situations où vous préférez peut-être supprimer des éléments au lieu de bloquer.
en utilisant une instruction SELECT avec default
Une façon de déterminer si une chaîne tamponnée est complète est d'utiliser une instruction SELECT avec une clause par défaut. Voici un exemple:
package main import "fmt" func main() { ch := make(chan int, 1) // Fill it up chDans cet exemple, l'instruction SELECT a deux cas:
sortie:
Channel full. Discarding value
Vérification de la taille du canal
Une autre méthode pour détecter un canal complet est de vérifier sa taille en utilisant Len (ch) et la comparer à sa capacité à l'aide de cap (ch).
if len(ch) == cap(ch) { // Channel was full, but might not be by now } else { // Channel wasn't full, but might be by now }
Notez que cette approche ne garantit pas que le résultat sera valide au moment où le bloc IF est entré en raison de la possibilité d'une activité de canal entre la vérification de la taille et l'instruction IF.
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