Maison >développement back-end >Golang >Comment mesurer le nombre d'éléments dans un canal tamponné dans Go ?

Comment mesurer le nombre d'éléments dans un canal tamponné dans Go ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-13 06:17:02644parcourir

How do you measure the number of elements in a buffered channel in Go?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn