【一个经典BUG】gin框架中,异步协程使用context导致取不到数据

bug的内容大致如下:

func httpHandle(c *gin.Context) {
    go func(ctx Context){
        v := ctx.Value("xxx")  // 这里取不到值,导致后续发生panic
    }(c)
}

1.发生panic是随机的;
2.问题的原因是:当协程开始使用context的时候,父级协程技术,gin框架回收了context。
context失效导致了问题。
gin框架如何回收context,还没搞明白。后续还要继续看看。

posted on 2022-09-07 15:23  ahfuzhang  阅读(646)  评论(0)    收藏  举报