内容简介:golang中,创建一个channel并开始执行后便脱离了主程序控制,那么,类似于其他语言中, 多线程中的每个线程join到主线程,golang中 如何等待所有的 goroutine 都执行完毕?查了下大概这个样子.以上.
golang中,创建一个channel并开始执行后便脱离了主程序控制,那么,类似于其他语言中, 多线程中的每个线程join到主线程,golang中 如何等待所有的 goroutine 都执行完毕?
查了下大概这个样子.
- 用 channel 进行同步
func main() { ch := make(chan int, 2) go func() { for i := 0; i < 10; i++ { time.Sleep(1 * time.Second) fmt.Println("go routine1", i) } ch <- 1 }() go func() { for i := 0; i < 10; i++ { time.Sleep(1 * time.Second) fmt.Println("go routine2", i) } ch <- 2 }() for i := 0; i < 2; i++ { <-ch } fmt.Println("main exit") }
-
sync.WaitGroup
官方推荐方法,不需要知道 gotoutine 的个数
import "fmt" import "time" import "sync" func main() { var wg sync.WaitGroup for i := 0; i < 10; i++ { wg.Add(1) go func(i int) { defer wg.Done() time.Sleep(1 * time.Second) fmt.Println(i) }(i) } wg.Wait() // 等待 fmt.Println("main exit") }
以上.
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- java.lang.Runtime.getRuntime().exec 调用后,等待被调用程序结束后再继续执行
- 等待队列源码分析
- 全局事务锁等待分析
- Oracle等待事件内容详解
- 细说selenium的等待条件
- Java并发 -- 等待-通知机制
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
数据结构与算法分析
韦斯 (Mark Allen Weiss) / 机械工业出版社 / 2009-1-1 / 55.00元
本书是国外数据结构与算法分析方面的经典教材,使用卓越的Java编程语言作为实现工具讨论了数据结构(组织大量数据的方法)和算法分析(对算法运行时间的估计)。 随着计算机速度的不断增加和功能的日益强大,人们对有效编程和算法分析的要求也不断增长。本书把算法分析与最有效率的Java程序的开发有机地结合起来,深入分析每种算法,内容全面、缜密严格,并细致讲解精心构造程序的方法。一起来看看 《数据结构与算法分析》 这本书的介绍吧!
RGB HSV 转换
RGB HSV 互转工具
RGB CMYK 转换工具
RGB CMYK 互转工具