MPG模式运行状态1
1)当前程序有三个M,如果三个M都在一个cpu运行,就是并发,如果在不同的cpu运行就是并行
2)M1,M2,M3正在执行一个G,M1的协程队列有三个,M2的协程队列有三个,M3的协程队列有两个
3)从上图可以看到:Go的协程是轻量级的线程,是逻辑态的,Go可以容易的起上万个协程
4)其他程序c/java的多线程,往往是内核态的,比较重量级,几千个线程就有可能耗光cpu资源

MPG模式运行状态2
1)分成两个部分来看
2)原来的情况是M1主线程正在执行G1协程,另外有三个协程在等待
3)如果G1协程阻塞,比如读取文件或者数据库
4)这时就会创建M2主线程(也可能是从已有的线程池中取出M2)并且将等待的三个协程挂到M2下执行,M1主线程下的G1仍然执行文件的读写
5)这样的MPG调度模式,既可以让G1执行,也不会让队列的其他协程一直阻塞

最新文章

  1. 支持向量机原理(四)SMO算法原理
  2. 纯css3手机页面图标样式代码
  3. APK签名是如何生成的
  4. Nim教程【十四】
  5. iptables案例手册
  6. 使用 crosswalk-cordova 打包sencha touch 项目,再也不用担心安卓兼容问题!
  7. 如何引用XML文件生成C#类
  8. git基本使用
  9. word编辑器解码集合
  10. Android自定义带标题边框的Layout
  11. windows2003 IIS6 部署MVC3和MVC4程序
  12. 每天一个Linux命令(11)--nl命令
  13. asp.net提高程序性能的技巧(一)
  14. phpstudy 版本切换注意的问题
  15. ImportError: Imageio Pillow plugin requires Pillow, not PIL!
  16. spring+mybatis的多源数据库配置实战
  17. js 选择指定区域
  18. ansible hosts文件编写,简单使用测试(普通用户、sudo用户、root用户登录权限测试)
  19. ORA-02291: 违反完整约束条件 - 未找到父项关键字
  20. Knockoutjs之observable和applyBindings的使用

热门文章

  1. C#所有经典排序算法汇总
  2. Centos 7 编译安装mariadb 5.5
  3. Badboy安装和简单介绍
  4. Loadrunner Controller运行不了,提示cannot create Vusers
  5. ubuntu下vscode认识 system("pause")的解决办法
  6. 第十 构建Web内容的技术
  7. UTC和GMT什么关系?moment处理世界时问题
  8. AChartEngine折线图实例
  9. Azure CosmosDB (14) 使用Postman访问CosmosDB REST API
  10. 编写antd配置表单组件