当前位置:网站首页>2020-11-06: go, let's talk about the scheduler.
2020-11-06: go, let's talk about the scheduler.
2020-11-06 22:43:00 【Fuda Dajia architect's daily question】
Fogo's answer 2020-11-06:
·MPG Model :goroutine The concurrency model of can be summarized as MPG Model ;
·MPG Concept : Threads (machine, System threads , Physical threads )- kernel (processor)- coroutines (goroutine, User threads , Logical threads );
· Many to many scheduling model : The overall scheduling follows the many to many model , Multiple collaborations ( About a million ) Scheduling in multiple threads at the same time ( About a thousand ) Next ;
·LRQ(LocalRunningQueue): Local run queue , One M Execute in a P In the context of ,P There is a G queue ;
·GRQ(GlobalRunningQueue): Global run queue ,G Not initialized or not LRQ When it's ready to mount, it's thrown in GRQ;
·GRQ=>LRQ:MP Will be in LRQ Check after execution GRQ, And steal the task from it and mount it to the current LRQ In the implementation of , They also have regular checks ;
· The purpose of scheduling is : The purpose of scheduling is to prevent thread blocking 、 idle 、 By OS Hang up (syscall);
· Prevent threads M jam :G1 coroutines IO When you leave MP,G2 From the current MP Of LRQ Pop up and execute ;
· Prevent threads M idle :M1 When idle , From M2 Of LRQ To steal half of the mission , Mount to your own LRQ In the implementation of ;
· Prevent threads M By OS Hang up (syscall):P With LRQ Hang to the bottom of other threads to execute , When syscall At the end ,M Will try to G0 Mount to other LRQ Medium or GRQ in ;
detailed go Scheduler model reference :
Go Chinese language network :https://studygolang.com/articles/9610
Simple books :https://www.jianshu.com/p/f9024e250ac6
版权声明
本文为[Fuda Dajia architect's daily question]所创,转载请带上原文链接,感谢
边栏推荐
- August 30, 2020: naked write algorithm: the nearest common ancestor of two nodes in a binary tree.
- [learning] interface test case writing and testing concerns
- Empty test suite appears in JUnit test
- How does LeadTools detect, read and write barcodes
- 10000! Ideal car recalls all defective cars: 97 accidents have occurred and losses will be expanded
- 2020-08-20: the difference between go and python?
- August 14, 2020: what are the execution engines for data tasks?
- JS array the usage of array is all here (array method reconstruction, array traversal, array de duplication, array judgment and conversion)
- Erd-online free online database modeling tool
- Count the number of project code lines
猜你喜欢
Epu360: all the H5 templates you want are here, e-book, big turntable, red envelope rain, questionnaire survey
2020-08-20: the difference between go and python?
September 3, 2020: naked writing algorithm: loop matrix traversal.
.NETCore3.1+ Vue.js Low code workflow engine
Python 3 operates the Jenkins module API
jenkins pipline stage 设置超时
如何创建交互式内核密度图表
2020年新规,微信封号怎么快速解除?
win7 APPCRASH(解决方法)(转)
The memorandum model of behavior model
随机推荐
How to manage the authority of database account?
迅为iMX6开发板-设备树内核-menuconfig的使用
Git remote library rollback specified version
汽车维修app开发的好处与功能
Zhou Jie: database system of East China Normal University
STM32F030K6T6兼容替换灵动MM32F031K6T6
Detect certificate expiration script
September 9, 2020: naked writing algorithm: two threads print numbers 1-100 in turn.
条形码识别器Dynamsoft Barcode Reader v7.5全新上线!
Stm32f030c6t6 compatible to replace mm32spin05pf
1万辆!理想汽车召回全部缺陷车:已发生事故97起,亏损将扩大
pc端与移动端适配解决方案之rem
Jenkins pipline stage setting timeout
Plug in bilibilibili new version 0.5.5
Getting started with varhart xgantt
2020-08-17: how to solve data skew in detail?
How to use Gantt chart layers and filters
The first choice for lightweight GPU applications is the NVIDIA vgpu instance launched by Jingdong Zhilian cloud
WebAPI接口设计:SwaggerUI文档 / 统一响应格式 / 统一异常处理 / 统一权限验证
8.Swarm创建维护和水平扩展Service