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

作者:liuqingzheng

出处:https://www.cnblogs.com/liuqingzheng/p/16124117.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   刘清政  阅读(681)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示
more_horiz
keyboard_arrow_up light_mode palette
选择主题