回答

收藏

如何停止一个goroutine

技术问答 技术问答 315 人阅读 | 0 人回复 | 2023-09-11

我有一个调用方法 goroutine,并在通道上传递返回值:
$ @  V# M0 M6 q1 Y7 }' _  G
    / t9 v8 k9 S* v. H/ s
  • ch := make(chan int,100)go func(){    for              ch 如何停止这样的 ?goroutine?# I6 V6 r6 n! H/ P( z6 q
  •                                                                
    ! J7 B' E' j4 U/ K( E0 y; E$ `
  •     解决方案:                                                               
    # v+ h4 G* v3 G3 N2 [9 V
  •                                                                 通常,你去 goroutine 传输一个信号通道(可能是单独的)。当你想要 goroutine 停止时,信号通道用于推入值。goroutine 定期轮询通道。一旦检测到信号,它会退出。[code]quit := make(chan bool)go func()      for              select              case <- quit:            return        default:       Do other stuff     Do stuff// Quit goroutinequit <- true
      Q% \8 n( L. j' G7 X0 g
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则