runnext的抢占是如何发生的

来源:1-4 Go 程序是怎么跑起来的

weixin_慕移动6186909

2021-05-16 20:29:54



http://img.mukewang.com/climg/60a1107d09fd15ca09980462.jpg
这个cas指令是怎么做到:
1、 返回true代表新的g抢占成功
2、 返回false代表等待正在执行的g的呢
是什么条件判断的抢占成功呢?
还就就是想看这个cas的详细内容点进去是个没有实现的函数,如下图
http://img.mukewang.com/climg/60a1108909589b6f19041082.jpg

写回答

1回答

Xargin

2021-05-16

runnext 只是 P 结构体的一个字段,替换就是就是把 old 值保存下来,new 值塞进去就行了。。这里不叫抢占,抢占是要把正在执行的那些 goroutine 停下来

0
hargin
回复
hq_慕莱坞6039976
hp>图片上标的没有问题

h021-05-17
共10条回复

Go高级工程师实战营

慕课网与 GoCN 社区官方联手打造,定义行业Go高级人才培养标准,4个月,快速晋升为P6+/D7级高级人才。

458 学习 · 266 问题

查看课程