2021
06-08
06-08
Go并发:使用sync.WaitGroup实现协程同步方式
经常看到有人会问如何等待主协程中创建的协程执行完毕之后再结束主协程,例如如下代码:packagemainimport("fmt")funcmain(){gofunc(){fmt.Println("Goroutine1")}()gofunc(){fmt.Println("Goroutine2")}()}执行以上代码很可能看不到输出,因为有可能这两个协程还没得到执行主协程已经结束了,而主协程结束时会结束所有其他协程。解决办法是可以在main函数结尾加上等待:packagema...
继续阅读 >
先贴代码packagemainimport("fmt")//Sendthesequence2,3,4,...tochannel'ch'.funcgenerate(chchanint){fori:=2;;i++{ch<-i//Send'i'tochannel'ch'.}}//Copythevaluesfromchannel'in'tochannel'out',//removingthosedivisibleby'prime'.funcfilter(in,outchanint,primeint){for{i:=<-in//Receivevalueofnewvariable'i'from'in'.ifi==4{fmt.Prin...