Go1.14带来了哪3个涉及本堂课程的主要变化?

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,后超时,平滑退出。


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

1-3 里,前两项没问题,第三项不对,runnext 一直都有,不是 1.14 加的


你说的结果也没问题~

  • Go666 提问者 #1

    谢谢曹大,那请问您在课程和解答中提到的“3个变化”的另外一个是什么呢?

    2021-05-18 16:49:09
  • Xargin 回复 提问者 Go666 #2

    我印象中 1.14 涉及调度的变化就是信号式抢占和 timer 的变更

    没第三点了吧~

    2021-05-21 16:33:56
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师