绍兴seo网站优化,海棠网站,做网站互联网公司排名,营销策划方案公司WaitGroup 无缓冲channel
waitgroup 用来生成n个协程 Add() 、Done()、Wait() channel用来实现信号的传递从未实现同步阻塞#xff0c;确保协程顺序执行
package mainimport (fmtsynctime
)func main() {n : 200ch : make(chan bool) …WaitGroup 无缓冲channel
waitgroup 用来生成n个协程 Add() 、Done()、Wait() channel用来实现信号的传递从未实现同步阻塞确保协程顺序执行
package mainimport (fmtsynctime
)func main() {n : 200ch : make(chan bool) //创建一个无缓冲的channel实现同步阻塞var wg sync.WaitGroupwg.Add((n))for i : 1; i n; i {go func(n int) {defer wg.Done() //协程结束时减少waitgroup记数time.Sleep(time.Duration(n) * time.Second) //模拟耗时操作fmt.Println(output, n)ch - true //发送信号量到channel}(i)}for i : 1; i n; i {-ch //等待信号确保按序打印fmt.Println(按照顺序打印, i)}wg.Wait() //等待所有的协程执行完成
}