本文主要是介绍8-Gin同步异步,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一 同步异步
- goroutine机制可以方便地实现异步处理
- 另外,在启动新的goroutine时,不应该使用原始上下文,必须使用它的只读副本
package main
import (
"github.com/gin-gonic/gin"
"log"
"time"
)
func main() {
r := gin.New()
// 1.异步
r.GET("/long_async", func(c *gin.Context) {
// 需要搞一个副本
copyContext := c.Copy()
// 异步处理
go func() {
time.Sleep(3 * time.Second)
log.Println("异步执行:" + copyContext.Request.URL.Path)
}()
c.JSON(200,gin.H{"msg":"异步请求成功"})
})
// 2.同步
r.GET("/long_sync", func(c *gin.Context) {
time.Sleep(3 * time.Second)
log.Println("同步执行:" + c.Request.URL.Path)
c.JSON(200,gin.H{"msg":"同步请求成功"})
})
r.Run(":8000")
}
这篇关于8-Gin同步异步的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!