gmp模型中一定要有p吗
题目来源:百度
答案:
GMP模型指的是
- G gorountine
G是由go语言创建的具体代码执行体,位于用户态空间,占用较小的内存空间,G之间切换无须复杂的上下文、用户内核空间态的切换; - M Machine,操作系统的执行线程
操作系统的执行线程,最多GOMAXPROCS个活跃线程与核数一致,减少线程上下文的切换 - P 调度器,处理M与G的关系
可以调度线程执行的G,将那些进入系统调用而等待的G让出
为M提供上下文环境及资源
综上,P不一定要有,默认G,M可运行,但是存在:共享变量的操作需要使用锁,只有一个M,单线程执行,M切换G过程和线程切换没有太大区别,由go语言实现goroutine的上下文信息及运行状态的改变;