PHP-Editor Apple wird in diesem Artikel eine Frage diskutieren: „Läuft der Server in Goroutine?“ Goroutine ist ein leichter Parallelitätsmechanismus in der Go-Sprache, der Tausende gleichzeitiger Ausführungseinheiten im Programm erstellen kann. Aber ist es möglich, den Server in einer Goroutine zu betreiben? Die Antwort auf diese Frage ist nicht einfach und es müssen mehrere Faktoren berücksichtigt werden. Im folgenden Inhalt werden wir dieses Problem untersuchen und einige Lösungen anbieten.
Ich habe einen Golang-Dienst, der auf Kafka-Nachrichten lauscht, aber ich möchte darin auch einen http-Server für Gesundheitsprüfungen starten. Der Servercode ist einfach:
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 }
In der Hauptfunktion rufe ich nur die Funktion Start() auf.
server.Start()
Ist das in Ordnung? Oder sollte ich das in einer Goroutine wie dieser machen:
go func(){ server.Start() }()
Eine Menge anderer Dinge passieren in main.go – Warteschlangen-Listener werden initialisiert, Datenbanken usw.
Wenn Sie Ihren Hauptthread nicht Run
blockieren möchten, benötigen Sie eine Go-Routine.
go server.Start()
Das obige ist der detaillierte Inhalt vonServer in Goroutine ausführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!