go阻塞的协程怎么退出

   2025-02-15 7720
核心提示:在Go中,协程的退出通常通过chan实现。下面是一种常见的模式来实现阻塞的协程退出:package mainimport (fmttime)func worker(do

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

package mainimport (    "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来实现协程退出的模式非常常见,因为它提供了一种简单而可靠的方式来同步协程的执行。

 
 
更多>同类维修知识
推荐图文
推荐维修知识
点击排行
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  网站留言