请教大神一个关于context的问题

tjudqx · · 1488 次点击 · 开始浏览    置顶

代码 ```go func main() { ctx, cancel := context.WithTimeout(context.Background(), 400*time.Millisecond) defer cancel() go handle(ctx, 1500*time.Millisecond) fmt.Println("ab........") select { case <-ctx.Done(): fmt.Println("main", ctx.Err()) } } func handle(ctx context.Context, duration time.Duration) { fmt.Println("a......") select { case <-ctx.Done(): fmt.Println("handle", ctx.Err()) case <-time.After(duration): fmt.Println("process request with", duration) } } ``` 测试的结果是 ```go 1 main context deadline exceeded 2 main context deadline exceeded handle context deadline exceeded 3 handle context deadline exceeded main context deadline exceeded ``` 请教, 什么原因导致的这3种结果?涉及到哪些知识点?

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:701969077

1488 次点击  ∙  1 赞  
加入收藏 微博
1 回复  |  直到 2021-05-05 19:00:12
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传