目录

[Go] Gin异步协程

目录

golang的高并发一大利器就是协程。gin里可以借助协程实现异步任务。

package main
import (
    "log"
    "time"

    "github.com/gin-gonic/gin"
)


func main(){
    router := gin.Default()

    router.GET("/sync", func(c *gin.Context) {
        time.Sleep(5 * time.Second)
        log.Println("Done! in path" + c.Request.URL.Path)
    })

    router.GET("/async", func(c *gin.Context) {
        // 因为涉及异步过程,请求的上下文需要copy到异步的上下文,并且这个上下文是只读的。
        cCp := c.Copy()
        go func() {
            time.Sleep(5 * time.Second)
            log.Println("Done! in path" + cCp.Request.URL.Path)
        }()
    })

    router.Run(":8080")
}