在一个中间件 或 处理器 中 启动一个新的协成时,不能使用它里面原始
的 context , 只能使用它的只读副本 cc = c.Copy
示例如下:
package main
import (
"github.com/gin-gonic/gin"
_ "github.com/jinzhu/gorm/dialects/mysql"
"log"
"time"
)
func main() {
r :=gin.Default()
// 协程 测试
r.GET("/long_async", func(c *gin.Context) {
// 创建在协程中使用的副本
cp := c.Copy()
go func() {
time.Sleep(5*time.Second)
log.Println("Done ! in path" + cp.Request.URL.Path)
}()
})
r.GET("/long_sync", func(c *gin.Context) {
time.Sleep(5*time.Second)
log.Println("Done! in path " + c.Request.URL.Path)
})
r.Run(":3000")
}