go阻塞的协程怎么退出

avatar
作者
猴君
阅读量:4

在Go中,协程的退出通常通过chan实现。下面是一种常见的模式来实现阻塞的协程退出:

package main  import (     "fmt"     "time" )  func worker(done chan bool) {     fmt.Println("协程开始执行...")          // 模拟耗时操作     time.Sleep(2 * time.Second)          fmt.Println("协程执行完毕!")     done <- true }  func main() {     done := make(chan bool)          go worker(done)          // 阻塞等待协程完成     <-done          fmt.Println("主函数退出") } 

在上面的例子中,worker函数是一个阻塞的协程,它执行一些耗时的操作。在worker函数执行完毕后,通过将true发送到done通道来通知主函数协程的完成。主函数使用<-done语法从通道中接收数据,从而阻塞等待协程的完成。一旦接收到数据,主函数就会继续执行,打印"主函数退出"。

这种使用chan来实现协程退出的模式非常常见,因为它提供了一种简单而可靠的方式来同步协程的执行。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!