王锐
王锐
发布于 2024-06-16 / 52 阅读
0
0

golang基础

并发篇

在golang中有三种并发控制方式:waitGroup、Context及channel。waitGroup适用于多goroutine执行一个任务场景,channel可以用于并发协程优雅退出,但若有多个groutine都需要退出?如果这些goroutine又衍生出了其他goroutine呢,此时就需要使用context;

context使用规则

  • 不要把context放入结构体中,要以参数形式传递

  • context以参数传递,需要放到函数中第一位

  • 给函数传递context时不要传入nil,如果不知道传递什么,使用context.TODO

  • context的Value相关方法应该传递必须的数据,不要什么数据都是用这个数据传递

  • context是线程安全的,可以放在多个goroutine中传递

通道问题详解

参考链接


评论