golang面试题分析03_GMP调度器
操作系统中的程序可以往下分解为进程、线程和协程。Go中,协程被称为goroutine,被runtime进行调度。
GMP调度中,G代表goroutine,M代表线程,P是Processor,它包含了运行goroutine的资源,只有当 M 关联一个 P 后才能执行 G 。
复用线程:
2个体现:1.work stealing,当本线程无可运行的G时,尝试从其它县城绑定的P偷取G,而不是销毁线程;2.hand off,当本线程因为G进行系统调用阻塞是,线程释放绑定的P,把P转移给其它空闲的线程执行;
利用并行:
GOMAXPROCS设置P的数量,当GOMAXPROCS大于1时,就最多有GOMAXPROCS个线程处于运行状态,这些线程可能分布在多个CPU核上同时运行,使得并发利用并行。
在Go中,线程是运行goroutine的实体,调度器的功能就是把可运行的goroutine分配到工作线程上。
<h4>参考文献:</h4>Go语言高阶:调度器系列(1)起源
到此这篇关于“golang面试题分析03_GMP调度器”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!您可能感兴趣的文章:
golang面试题分析03_GMP调度器
goroutine 调度器
Golang 调度器 GMP 原理与调度全分析
想系统学习GO语言(Golang
golang相关学习贴
Golang-性能监控及调优
Golang常见面试题
golang runtime 简析
golang https 全局代理_Golang 调度器
goroutine调度原理