main函数中如何等待协程运行完毕
Posted linyihai
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了main函数中如何等待协程运行完毕相关的知识,希望对你有一定的参考价值。
使用channel同步
package main
import (
"fmt"
)
func printNumber(num int, c chan struct{}) {
fmt.Println(num)
c <- struct{}{}
}
func main() {
sign := make(chan struct{}, 10)
for i:=0;i<10;i++ {
go printNumber(i, sign)
}
for i:=0;i<10;i++{
<-sign
}
fmt.Println("Done.")
}
使用sync.WaitGroup
package main
import (
"fmt"
"sync"
)
func printNumber(num int, callback func()) {
fmt.Println(num)
callback()
}
func main() {
var wg sync.WaitGroup
wg.Add(10)
for i:=0;i<10;i++ {
go printNumber(i, wg.Done)
}
wg.Wait()
fmt.Println("Done.")
}
以上是关于main函数中如何等待协程运行完毕的主要内容,如果未能解决你的问题,请参考以下文章