Maison > développement back-end > Golang > Comment la fonction « recover() » de Go peut-elle assurer la résilience de Goroutine contre les crashs ?

Comment la fonction « recover() » de Go peut-elle assurer la résilience de Goroutine contre les crashs ?

Barbara Streisand
Libérer: 2024-11-19 12:20:03
original
990 Les gens l'ont consulté

How Can Go's `recover()` Function Ensure Goroutine Resilience Against Crashes?

Maintenir les Goroutines en fonctionnement au milieu des crashs

Dans Go, les goroutines offrent une concurrence légère et un parallélisme aux applications. Cependant, des plantages inattendus dans une goroutine peuvent potentiellement arrêter l'ensemble du programme. Pour éviter ce comportement indésirable, il est essentiel de concevoir une stratégie résiliente pour que les autres goroutines ne soient pas affectées.

Mise en œuvre de la résilience avec le mécanisme de récupération de Go

Pour gérer les paniques inattendues dans les goroutines, le système de récupération intégré (), lorsqu'elle est placée dans une fonction de report, offre la possibilité de capturer et de gérer les erreurs liées à la panique. Une fonction d'assistance peut être utilisée pour lancer des goroutines avec cette protection, comme suit :

func protect(f func()) {
    defer func() {
        if err := recover(); err != nil {
            log.Printf("Recovered: %v", err)
        }
    }()

    f()
}
Copier après la connexion

En utilisant cette fonction d'assistance, les goroutines peuvent être protégées des plantages, permettant ainsi à d'autres goroutines de continuer à fonctionner. Prenons l'exemple suivant :

func main() {
    go protect(doPanic)

    for {
        time.Sleep(time.Second)
        fmt.Println("tick")
    }
}
Copier après la connexion

Dans cet exemple, la goroutine lancée avec doPanic peut paniquer sans affecter la goroutine principale, qui imprime en permanence les instructions "tick".

Conclusion

En tirant parti de la fonction recovery() de Go et en créant un wrapper de protection pour les goroutines, les développeurs peuvent gérer les paniques de manière proactive et maintenir la résilience au sein de leurs applications. Cette approche garantit que les plantages inattendus ne perturbent pas le bon fonctionnement des autres goroutines, préservant ainsi la stabilité et la continuité des applications.

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