Maison > développement back-end > Golang > le corps du texte

Comment créer un générateur \'tail -f\' en Go avec une approche efficace basée sur le sommeil ?

Barbara Streisand
Libérer: 2024-10-30 03:40:28
original
307 Les gens l'ont consulté

How to Build a

Générateur de type "Tail -f" dans Go

Cet article traite de la création d'un générateur de type "tail -f" dans Go Go, qui permet de surveiller en temps réel les dernières lignes d'un fichier. L'implémentation initiale de Go impliquait un appel asynchrone avec une goroutine lisant continuellement le fichier. Cependant, une approche plus idiomatique est recommandée en utilisant un wrapper autour d'un lecteur qui dort sur EOF.

Implémentation améliorée :

L'amélioration suggérée implique la création d'une structure tailReader qui implémente l'interface io.ReadCloser. Ce lecteur se met en veille lorsqu'il rencontre un EOF, permettant une surveillance continue sans interrogation continue.

<code class="go">type tailReader struct {
    io.ReadCloser
}

func (t tailReader) Read(b []byte) (int, error) {
    for {
        n, err := t.ReadCloser.Read(b)
        if n > 0 {
            return n, nil
        } else if err != io.EOF {
            return n, err
        }
        time.Sleep(10 * time.Millisecond)
    }
}</code>
Copier après la connexion

Pour créer un tailReader, utilisez newTailReader(fileName). Ce lecteur peut être utilisé avec n'importe quel fournisseur acceptant un io.Reader, comme bufio.Scanner ou json.NewDecoder.

Avantages :

Cette méthode offre plusieurs avantages sur l'approche goroutine :

  • Arrêt plus facile : Fermez simplement le fichier pour terminer l'opération.
  • Compatibilité : Le lecteur peut être intégré de manière transparente à de nombreux packages existants prenant en charge io.Reader.
  • Temps de veille réglable : le délai de mise en veille peut être optimisé en fonction des exigences de performances et de la tolérance à la latence.

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!

source:php.cn
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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!