管道是先进先出的,为什么第一个的代码中X是-5呢

图片描述

图片描述

回答:

并发的协程执行是无须的。

先执行 sum(s[len(s)/2:], c) , c 里面第一个数据就是 -5 喽

回答:

你并不能保证前一个go程里的for循环比后一个go程里的先执行。

回答:

go那个goroutine先执行是调度器负责的,如果核心只有一个,那么一定是最后一个goroutine最先执行。

回答:

有两种方式可以解决你的疑问:
1、你可以加个休眠时间:

    x := <-c 

y := <-c

time.Sleep(1)

2、一个一个取:

    go sum(s[:len(s)/2],c)

x := <-c

go sum(s[len(s)/2:],c)

y := <-c

以上是 管道是先进先出的,为什么第一个的代码中X是-5呢 的全部内容, 来源链接: utcz.com/p/182107.html

回到顶部