Go1.14带来了哪3个涉及本堂课程的主要变化?
Go1.14带来了哪3个涉及本堂课程的主要变化?
1. time.Sleep()不再另起Goroutine,而是在当前P下安全调度,无需发生M/P的切换
2. 支持基于信号的异步抢占式调度
3. 增加runnext,最后启动的Goroutine最先执行 (?)
问题:
1. 是不是以上三项?查阅了一些资料,前两项有说明,第三项存疑。
2. 课件中“一个无聊的输出顺序问题”,1.14及以后,是不是应该这样解释?
左图,Channel阻塞,抢占P,开始执行runnext,优先输出9,后0-8,所有线程hang住,程序异常退出。
右图,time.Sleep()不再另起Goroutine,那运行时应该:抢占P,开始执行runnext,优先输出9,后0-8,后超时,平滑退出。
53
收起
正在回答
1回答
1-3 里,前两项没问题,第三项不对,runnext 一直都有,不是 1.14 加的
你说的结果也没问题~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星