Go的sync.WaitGroup(二):WaitGroup让主程序与协程全部都执行 并且全部执行完成
生活随笔
收集整理的這篇文章主要介紹了
Go的sync.WaitGroup(二):WaitGroup让主程序与协程全部都执行 并且全部执行完成
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
WaitGroup
add與done只是用來統計數量的? done減為0的時候就告訴wait結束
wait只是用來堵塞主函數的? 當協程數為0時候結束
有了它我們不用寫time.Sleep或者<-channelname了
package mainimport ("fmt""sync" )var waitgroup sync.WaitGroupfunc Afunction(shownum int) {fmt.Println(shownum)waitgroup.Done() //任務完成,將任務隊列中的任務數量-1,其實.Done就是.Add(-1) }func main() {for i := 0; i < 6; i++ {waitgroup.Add(1) //每創建一個goroutine,就把任務隊列中任務的數量+1go Afunction(i)}waitgroup.Wait() //.Wait()這里會發生阻塞,直到隊列中所有的任務結束就會解除阻塞 }// 5 // 3 // 2 // 0 // 1 // 4?
總結
以上是生活随笔為你收集整理的Go的sync.WaitGroup(二):WaitGroup让主程序与协程全部都执行 并且全部执行完成的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大树云消毒级卫生巾的价格多少?贵吗?
- 下一篇: 肉馅饼的家常做法?