Maison > Article > développement back-end > Serveur en cours d'exécution dans goroutine ?
L'éditeur PHP Apple abordera une question dans cet article : "Exécuter le serveur dans goroutine ?" Goroutine est un mécanisme de concurrence léger dans le langage Go qui peut créer des milliers d'unités d'exécution simultanées dans le programme. Mais est-il possible de faire tourner le serveur dans une goroutine ? La réponse à cette question n’est pas simple et plusieurs facteurs doivent être pris en compte. Dans le contenu suivant, nous explorerons ce problème et donnerons quelques solutions.
J'ai un service Golang qui écoute les messages Kafka, mais je souhaite également y démarrer un serveur http pour les contrôles de santé. Le code du serveur est simple :
package server import ( "net/http" "github.com/gin-gonic/gin" ) func Start() { port := ":8080" r := setupRouter() r.Run(port) } func setupRouter() *gin.Engine { r := gin.Default() r.GET("/health", func(ctx *gin.Context) { ctx.JSON(http.StatusOK, gin.H{"status": "OK"}) }) return r }
Dans la fonction principale, j'appelle uniquement la fonction Start().
server.Start()
Est-ce que ça va ? Ou devrais-je faire ça dans une goroutine comme celle-ci :
go func(){ server.Start() }()
Beaucoup d'autres choses se produisent dans main.go - les écouteurs de file d'attente sont initialisés, les bases de données, etc.
Si vous ne voulez pas Run
bloquer votre fil de discussion principal, vous aurez besoin d'une routine de démarrage.
go server.Start()
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!