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)
}

posted @ 2021-12-09 17:02  专职  阅读(329)  评论(0编辑  收藏  举报