教程集 www.jiaochengji.com
教程集 >  脚本编程  >  Asp.net  >  正文 Golang并发编程中控制主goroutine退出实现的例子

Golang并发编程中控制主goroutine退出实现的例子

发布时间:2017-12-11   编辑:jiaochengji.com
教程集为您提供Golang并发编程中控制主goroutine退出实现的例子等资源,欢迎您收藏本站,我们将为您提供最新的Golang并发编程中控制主goroutine退出实现的例子资源
下文一聚教程小编来为各位介绍一个关于Golang并发编程中控制主goroutine退出实现例子了,希望这篇教程可以为各位同学带来帮助的哦,具体如下文介绍。

在使用golang进行并发编程的时候,当你新起goroutine异步执行时,主goroutine并不知道其它goroutine是否运行完毕,一旦主goroutine退出后,所有的goroutine都会退出,因此需要控制主goroutine退出时间,可有如下方法:

(1)time.Sleep()

比较粗暴,不靠谱,就是让主goroutine多跑一会儿,实际并不确定其它goroutine是否运行结束.

(2)利用channel通信

在主goroutine一直阻塞等待一个退出信号,在其他goroutine完成任务后给主协程发送一个信号,主协程收到这个信号后退出

e := make(chan bool)
 go func() {
      fmt.Println("hello")
      e <- true
 }()
 <-e

(3)利用sync.WaitGroup

WaitGroup,它能够一直等到所有的goroutine执行完成,并且阻塞主线程的执行,直到所有的goroutine(Golang中并发执行的协程)执行完成。

 var wg sync.WaitGroup
     func main() {
          wg.Add(1)
          go func() {
               fmt.Println("hello")
               wg.Done() //完成
          }()
          wg.Wait()
     }

您可能感兴趣的文章:
Golang并发编程中控制主goroutine退出实现的例子
golang goroutine 通知_深入golang之---goroutine并发控制与通信
22Go常见的并发模式和并发模型
golang 深入浅出之 goroutine 理解
Go WaitGroup实现原理
goroutine 调度器
Goroutine的调度分析(一)
Golang 中的 Goroutine 调度原理与 Chanel 通信
Golang并发:并发协程的优雅退出
简单理解 Goroutine 是如何工作的

[关闭]
~ ~