Goroutinue 简单例子

// 两个goroutinue 中都有for 循环是因为,本次声明的是无缓冲的 管道
// 当第一个数据被放入管道中,只有被取走,才会放入第二个数据到管道
// 所以,两个goroutinue中 必须都要有 for循环 一放一取
// 如果只有一个有for 循环 那就会造成阻塞,之后主goroutinue 就会强行结束

var
wg sync.WaitGroup func main(){ //var a chan int a := make(chan int) wg.Add(1) go func(wg *sync.WaitGroup) { defer wg.Done() for i := 0;i<= 10;i++{ a <- i } //a <- 1 }(&wg) wg.Add(1) go func(wg *sync.WaitGroup) { defer wg.Done() for i := 0;i<=10;i++{ result :=<- a fmt.Println(result) } }(&wg) fmt.Println("waiting for all goroutine ") wg.Wait() fmt.Println("All goroutines finished!") }
邮箱: 1090055252@qq.com
原文地址:https://www.cnblogs.com/zhaoxianxin/p/14213618.html