golang G

阅读: 评论:0

golang G

golang G

GMP设计架构


GMP分别代表什么?

G:Goroutine
M: OS Thread
P:抽象概念(Processor),类似cpu的作用,将G调度到M上,进行绑定
所有的 P 都在程序启动时创建,并保存在数组中,最多有 GOMAXPROCS(可配置) 个

简单的发展历史!

最开始并没有P,所以G和M绑定之后,出现了很多问题,譬如一个任务很慢时,这个时候并没有动作可以解绑,为了解决类似问题,引入了P(Processor)调度器,相当于中间加了一层

Local RunQueue是什么?

本地等待运行的 G,存的数量有限,不超过 256 个。新建 G’时,G’优先加入到 P 的本地队列,如果队列满了,则会把本地队列中一半的 G 移动到全局队列,
LRQ 不加锁,GRQ加锁

Global RunQueue是什么?

存放等待运行的 G,加锁,LRQ都满了的时候,会放入GRQ

Network poll起到什么作用?

同步调度

异步调度

GMP 是如何配合工作的?

本文发布于:2024-01-27 19:18:16,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17063542952124.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:golang
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23