Golang-GMP模型

G

Goroutine,每一个goroutine都会有一个自己的栈空间,初始化时在2k,空间会随着需求增长。

M

Machine,即代表内核线程(线程)

P

Process,调度器,负责调度goroutine,维护一个本地goroutine队列,M从P上获取G并执行,同时负责部分内存的管理

在这里插入图片描述

GMP模型

golang 中线程(M)是运行 goroutine(G) 的实体,调度器§的作用是把可运行的 goroutine(G) 分配到工作线程(M)上。
在这里插入图片描述

1、全局队列:存放等待运行的 G。

2、P 的本地队列:同全局队列类似,存放的也是等待运行的 G,存的数量不超过 256 个。新建 G’ 时,G’ 优先加入到 P 的本地队列,如果队列满了,则会把本地队列中一半的 G 移到全局队列。P 列表:所有的 P 都在程序启动时创建,并保存在数组中,最多有 GOMAXPROCS(可配置) 个。

3、M:线程想运行任务就得获取 P,从 P 的本地队列获取 G,P 队列为空时,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
OSZAR »