golang gin 框架 異步同步 goroutine 併發

goroutine機制可以方便地實現異步處理

package main

import (
    "log"
    "time"

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

func main() {
    // 1.創建路由
    // 默認使用了2箇中間件Logger(), Recovery()
    r := gin.Default()
    // 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)
        }()
    })
    // 2.同步
    r.GET("/long_sync", func(c *gin.Context) {
        time.Sleep(3 * time.Second)
        log.Println("同步執行:" + c.Request.URL.Path)
    })

    r.Run(":8000")
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章