Heim  >  Artikel  >  Backend-Entwicklung  >  Server in Goroutine ausführen?

Server in Goroutine ausführen?

王林
王林nach vorne
2024-02-11 08:30:08388Durchsuche

在 goroutine 中运行服务器?

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.

Frageninhalt

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.

Workaround

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen