内容简介: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")
}
以上.
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Smashing Book
Jacob Gube、Dmitry Fadeev、Chris Spooner、Darius A Monsef IV、Alessandro Cattaneo、Steven Snell、David Leggett、Andrew Maier、Kayla Knight、Yves Peters、René Schmidt、Smashing Magazine editorial team、Vitaly Friedman、Sven Lennartz / 2009 / $ 29.90 / € 23.90
The Smashing Book is a printed book about best practices in modern Web design. The book shares technical tips and best practices on coding, usability and optimization and explores how to create succes......一起来看看 《The Smashing Book》 这本书的介绍吧!