gin框架中的同步异步
goroutine机制可以方便地实现异步处理
另外,在启动新的goroutine时,不应该使用原始上下文,必须使用它的只读副本
// 异步
func longAsync(context *gin.Context) {
copyContext := context.Copy()
go func() {
time.Sleep(3 * time.Second)
log.Println(copyContext.Request.URL.Path)
}()
}
// 同步
func longSync(context *gin.Context) {
time.Sleep(3 * time.Second)
log.Println(context.Request.URL.Path)
}