文章插图
任务窃取任务窃取作用是平衡P之间的负载,如果某个P上的G都执行完了,此时会检查其他P上有没有可执行的G,如果有则会窃取其他P上的G来执行 。
图7中,有两个P,每个P上有4个G,全局队列中也有一个G 。

文章插图
图8中,P1上的G全部执行完了,但是P2和全局队列上还有G待执行 。此时P1需要窃取其他G来执行,窃取规则和调度规则是一样的参考上面的 runtime.schedule。

文章插图
图9中,根据窃取规则,P1会将P2上一半的G窃取过来执行 。

文章插图
图10中,如果此时P2上的G都执行完了,并且P1的本地队列中也没有G了会怎么办?

文章插图
图11中,P2上的G都执行完,它要开始窃取任务,但是P1上也没有G了,根据窃取规则他会把全局队列上的G拿过来执行 。

文章插图
参考这篇文章基本上是翻译下面的文章,然后加了一些自己的理解 。
推荐阅读
- 工业机器人四大巨头的优劣势对比
- websocket连接太多导致服务器卡顿怎么办?一招轻松实现横向扩展
- 机器学习工程师和研究员之间,相隔的并不止薪水
- CPU处理器|芯片代工不会降价!台积电称3nm下半年量产 2025年量产2nm
- qq阅读器的功能介绍
- 太岁究竟是什么“东西”?我国科学家用精密仪器检测揭示太岁之谜
- 华为文本编辑器在哪?
- Chrome浏览器|Windows 10/11更新后:Chrome、Edge没法用!附解决办法
- 淘数据如何使用 淘宝数据采集器
- 阿里云服务器 Centos 7 搭建Git服务器
