Java教程

8-Gin同步异步

本文主要是介绍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同步异步的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!