golang的队列机制实现同步主线程接受子协程的结果
package main
import (
"fmt"
"runtime"
"sync"
)
func main() {
//这里控制cpu核数
runtime.GOMAXPROCS(1)
//这里等待锁的协程组
wg := sync.WaitGroup{}
//这里是添加20个携程
wg.Add(20)
for i := 0; i < 10; i++ {
go func() {
fmt.Println("i: ", i)
//释放协程执行
wg.Done()
}()
}
for i := 0; i < 10; i++ {
go func(i int) {
fmt.Println("i: ", i)
//释放协程执行
wg.Done()
}(i)
}
//这里是主线程阻塞等待协程完成
wg.Wait()
}
------------------------------
这里主要是控制在一个cpu上,通过sync.WaitGroup{} 实现类似队列功能,然后来阻塞主线程执行,等待子线程完成再执行主线程