比如:
```
var wg = new(sync.WaitGroup)
func work(){
defer wg.Done()
...
}
func Test(N int){
for i := 0; i < N; i++{
wg.Add(1)
go work()
}
wg.Wait()
}
```
和这样
```
func work(ch chan int){
...
ch <- 0
}
func Test(N int){
for i := 0; i < N; i++{
go work()
}
for i := 0; i < N; i++{
<-ch
}
}
```
到底用那种???
不知道什么时候用chan还是sync.WaitGroup??
第一种wg主要用于多个goroutine之间的控制,就是所有的work()执行完了Test()才能执行完,第二种chan主要用于goroutine之间传递数据,就像work()中发送数据,Test()中接收数据一样。
#1
更多评论