Maintenir un programme Go de longue durée en cours d'exécution
Lors de l'exécution d'un serveur de longue durée dans Go, il est crucial d'empêcher la fonction principale de se fermer. pour maintenir le programme en vie. Une pratique courante consiste à utiliser fmt.Scanln() pour suspendre l'exécution indéfiniment, mais cette approche n'est peut-être pas optimale.
Solutions basées sur le blocage
Une meilleure solution est pour utiliser des opérations de blocage pour empêcher main de quitter. Considérez le code suivant :
package main import ( "fmt" "time" ) func main() { go forever() select {} // block forever } func forever() { for { fmt.Printf("%v+\n", time.Now()) time.Sleep(time.Second) } }
Dans cet exemple, select {} est utilisé pour bloquer indéfiniment la goroutine principale. Il crée une opération de sélection de blocage, qui attend indéfiniment la fin de toute opération sur le canal multiplexé. Puisqu'il n'y a aucun canal dans l'instruction select, elle ne se terminera jamais.
Autres considérations
En résumé, en utilisant des opérations de blocage (telles que select {}) est une méthode fiable pour maintenir en vie un programme Go de longue durée. La combinaison de cette approche avec une gestion gracieuse des arrêts et des mécanismes de détection d'inactivité garantit un système robuste et stable.
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!