Go 如何 做到同时取消很多个协程

3 min read
  1. 使用一个循环遍历 goroutine 的列表,调用每个 goroutine 的 cancel() 函数来取消它。
  2. 将所有 goroutine 的取消通道绑定到一个 select 语句中,然后向这个 select 语句发送一个信号来取消所有 goroutine。
  3. 利用 context 包中的 WithCancel 函数创建一个上下文,并将它传递给每个 goroutine。当想要取消所有 goroutine 时,调用上下文的 cancel() 函数即可。
  4. 将所有 goroutine 的取消函数封装在一个函数中,然后使用 go 关键字启动这个函数来同时取消多个 goroutine。
  5. 使用一个带缓存的通道来存放所有 goroutine 的取消函数,并依次向这个通道发送所有函数。当想要取消所有 goroutine 时,循环取出通道中的函数,然后调用它们即可。