Comment mesurer le nombre d'éléments dans un canal tamponné
Les canaux tamponnés dans Go fournissent un moyen de contenir un certain nombre d'éléments avant bloquer une opération d'envoi ou de réception. Déterminer le nombre d’éléments stockés dans un canal peut être crucial pour gérer le contrôle des flux entre producteurs et consommateurs. Cependant, en raison de la concurrence, obtenir une mesure exacte peut s'avérer difficile.
Une approche pour mesurer le nombre d'éléments dans un canal consiste à utiliser la fonction len() intégrée. Selon la documentation de Go, len() renvoie la longueur d'un objet en fonction de son type. Pour les canaux, len() renvoie le nombre d'éléments mis en file d'attente (non lus) dans le tampon du canal.
Pour démontrer cela, considérons l'exemple de code suivant :
package main import "fmt" func main() { c := make(chan int, 100) for i := 0; i < 34; i++ { c <- 0 } fmt.Println(len(c)) }
Dans ce code, nous créer un canal tamponné d'une capacité de 100. Une boucle est ensuite utilisée pour envoyer 34 éléments dans le canal. Enfin, nous utilisons len(c) pour déterminer le nombre d'éléments actuellement stockés dans le canal.
Lorsque vous exécutez ce programme, il affichera :
34
Cela confirme que len( ) peut être utilisé pour mesurer le nombre d'éléments dans un canal, même avec la possibilité d'interférences liées à la concurrence.
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!