//sync.WaitGroup的用途是它能够等待所有的goroutine执行完成,并且阻塞主线程的执行,直到所有的goroutine执行完成
//缺点:执行结果并不保证是顺序的,且进程结束并不会保证等待goroutine执行结束,无法指定固定的goroutine数量。可能通过channel解决这个问题
// Add():添加或者减少等待goroutine的数量
// Done():相当于Add(-1)
// Wait():执行阻塞,直到所有的WaitGroup数量编程0
package main
import (
"fmt"
"sync"
)
var waitgroup sync.WaitGroup
func Afunction(shownum int){
fmt.Println(shownum)
waitgroup.Done()
}
func main() {
for i:=0;i<10;i++{
waitgroup.Add(1)
go Afunction(i)
}
waitgroup.Wait()
}
本文由 Ryan 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为:
2019/03/07 12:05