2020,2035,2050战略-11-06:go中,谈一下调度器

·MPG模型:goroutine的并发模型可以归纳为MPG模型;
·多对多调度模型:整体调度遵循多对多模型,多个协程(约百万级)同时调度在多个线程(约千级)下;
·LRQ(LocalRunningQueue):本地运行队列一个M执行在一个P的上下文中,P中挂载着一个G队列;
·GRQ(GlobalRunningQueue):全局运行队列G没有初始化时或者没有LRQ可供挂载时就被丢入GRQ;
·GRQ=>LRQ:MP会在LRQ执行唍毕检查GRQ,并从中窃取任务挂载到当前LRQ中执行平时也会定期检查;
·调度的目的:调度的目的是防止线程堵塞、闲置、被OS挂起(syscall);
·防止线程M堵塞:G1协程IO时脱离MP,G2从当前MP的LRQ中弹出并执行;
·防止线程M闲置:M1闲置时会从M2的LRQ中窃取一半任务,挂载到自己的LRQ中执行;
·防止线程M被OS挂起(syscall):P带着LRQ挂到其它线程的下面执行当syscall结束时,M会尝试将G0挂载到其它LRQ中或GRQ中;


详细go调度器模型参考:

  • go并发编程入门到放弃 并發和并行 并发:一个处理器同时处理多个任务 并行:多个处理器或者是多核的处理器同时处理...

  • 介绍 上一篇文章我对操作系统级别的调度进行叻讲解,这对理解 Go 语言的调度器是很重要的这篇文章,我将解释下 G...

  • 本文主要介绍了 Go 程序为了实现极高的并发性能其内部调度器的实现架构(G-P-M 模型),以及为了最大限度利用...

:go中谈一下调度器。如何回答呢

:go中,谈一下调度器#福大大#

:go中谈一下调度器。如何回答呢

我要回帖

更多关于 2020,2035,2050战略 的文章

 

随机推荐