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

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

Mary-Kate Olsen
Libérer: 2024-11-14 14:28:02
original
478 Les gens l'ont consulté

How Do You Determine the Number of Elements in a Buffered Channel?

Mesure du nombre d'éléments dans un canal tamponné

Les canaux tamponnés fournissent un moyen de communication pratique entre les goroutines tout en permettant le stockage temporaire des éléments. Pour gérer efficacement le contrôle de flux, il devient nécessaire de déterminer le nombre d'éléments actuellement présents dans un canal.

Utilisation de la fonction len

Le langage Go fournit la fonction intégrée len, qui peut être utilisé pour obtenir la longueur de diverses structures de données, y compris les canaux. Dans le contexte d'un canal mis en mémoire tampon, la fonction len renvoie le nombre d'éléments actuellement en file d'attente non lus dans le tampon du canal.

Exemple de code

Le code suivant démontre l'utilisation de la fonction len pour mesurer le nombre d'éléments dans un canal tamponné :

package main

import "fmt"

func main() {
    c := make(chan int, 100) // create a buffered channel with a capacity of 100
    for i := 0; i < 34; i++ {
        c <- 0 // send 34 elements to the channel
    }
    fmt.Println(len(c)) // print the number of unread elements in the channel
}
Copier après la connexion

Sortie

L'exécution du code produira ce qui suit sortie :

34
Copier après la connexion

Cela confirme que le canal contient 34 éléments. Il est important de noter qu'en raison de la concurrence, la mesure peut ne pas être exacte dans tous les cas, car une préemption pourrait se produire entre la mesure et l'action.

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal