
php小编苹果在本文中将讨论一个问题:“在goroutine中运行服务器?”Goroutine是Go语言中轻量级的并发机制,可以在程序中创建数千个并发的执行单元。但是,是否可以在goroutine中运行服务器呢?这个问题的答案并不简单,需要考虑一些因素。在接下来的内容中,我们将探讨这个问题并给出一些解决方案。
问题内容
我有一个 Golang 服务正在监听 Kafka 消息,但我也想在其中启动一个 http 服务器以进行运行状况检查。服务器代码很简单:
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
}
在主函数中,我只调用 Start() 函数。
server.Start()
这样可以吗?或者我应该在像这样的 goroutine 中完成此操作:
HTShop网上购物系统由恒天网络科技有限公司根据国际先进技术和国内商务特点自主版权开发的一款具有强大功能的B2C电子商务网上购物平台。HTShop以国际上通用流行的B/S(浏览器/服务器)模式进行设计,采用微软公司的ASP.NET(C#)技术构建而成。 2007-11-10 HTShop CS 通用标准版 v1.1.11.10 更新内容自由更换模版功能开放 修改了购买多款商品,会员中心订单只显示
go func(){
server.Start()
}()
main.go 中还发生了很多其他事情 - 队列侦听器已初始化、数据库等。
解决方法
如果您不希望 Run 阻塞您的主线程,您将需要一个 go 例程。
go server.Start()









