8_gin日拱一足---异步和同步
gin_日拱一足—异步和同步
异步处理:可以方便的进行异步的处理请求—高并发场景可以使用异步请求的方式启动多个gorotine
切记:当进行异步执行处理函数时,需要使用Context上下文的副本在创建的goroutine中执行
package main
import (
"github.com/gin-gonic/gin"
"log"
"time"
)
func main() {
//同步和异步执行
r := gin.Default()
r.GET("/index",func(c *gin.Context){
//在启动新的goroutine时 不应该使用原始的上下文 而是需要使用其副本
copyContext := c.Copy()
go func(){ //异步操作
time.Sleep(time.Second)
log.Println("异步执行:" + copyContext.Request.URL.Path)
}()
})
r.GET("/index1",func(c *gin.Context){
time.Sleep(time.Second)
log.Println("同步执行" + c.Request.URL.Path)
})
r.Run()
}