M0

1、启动程序后的编号为0的主线程(当前启动一个进程时,进程中会包含一个线程,进程中的第一个线程的编号设置为M0)

如果进程中不开任何线程,可以理解为一个进程就是一个线程。

2、在全局变量runtime.M0中,不需要在heap(堆)上分配。(M0在整个进程中是唯一的,无需在堆上分配)

3、负责执行初始化操作和启动第一个G(M0是负责启动第一个G的,go语言是跑在协程上)

4、启动第一个G之后,M0就和其他的M一样了(负责给其他M进行抢占)

G0

1、每次启动一个M,都会第一个创建的goroutine,就是G0(G0不是整个进程唯一的,而是一个线程中唯一的)

2、G0仅用于负责调度其他的G(M可能会有很多的G,然后G0用来保持调度栈的信息)

当一个M从G1切换到G2,首先应该切换到G0,通过G0把G1干掉,把G2加进来,可以理解G0是一个转换的桥梁

3、G0不指向任何可执行的函数

4、每一个M都会有一个自己的G0

5、在调度或系统调用是会使用M会切换到G0。来进行调度其他的G。

6、M0的G0会放在全局空间

创建一个M就会有一个G0,创建其他的M也会有其他的G0。

首先创建一个M0,M0是全局唯一的。创建一个M就会绑定一个G0,然后初始化goMaxProcs、P的本地队列和全局队列。

M0首先会创建一个第一个G,Main的goroutine,创建完后M0会和G0解绑,执行Main,M0需要找到一个空闲的P去捆绑。

然后将Main放入捆绑的P的本地队列中,然后Main就跟正常的G是一样的了。如果要执行Main就把Main从P的本地队列中

拿过去执行、

可能执行一半时间片(10ms)超时了,Main就依然回到P的本地队列中,再去执行,只到Main函数执行完。或者panic或exit

执行完,Main函数才会被消失。

06 go启动生命周期M0和G0相关推荐

  1. [Dubbo3.0.8源码解析系列]-12-全局视野来看Dubbo3.0.8的服务启动生命周期

    目录 12 全局视野来看Dubbo3的服务启动生命周期 12.1 启动方法简介 12.2 启动器启动方法的调用逻辑start() 12.3 应用程序发布器DefaultApplicationDeplo ...

  2. 安卓学习笔记06:Activity生命周期与启动模式

    文章目录 零.学习目标 一.Activity生命周期 1.了解Activity生命周期 2.Activity生命周期简化图 (1)Activity存在与否 (2)Activity可见与否 (3)Act ...

  3. Android教程 -06 Activity的生命周期

    本篇播客我们重点介绍下如下知识点: 程序启动原理 Activity生命周期 Activity销毁与创建 视频建议采用超清模式观看, 欢迎点击订阅我的优酷 height="498" ...

  4. Spring5源码 - 06 Spring Bean 生命周期流程 概述 01

    文章目录 Bean生命周期概述 Demo finishBeanFactoryInitialization(beanFactory) 核心流程 Bean生命周期概述 说到Spring Bean的生命周期 ...

  5. 介绍一下Spring Boot启动流程以及生命周期勾子函数?

    代码那些事儿 2020-02-22 16:10:15 上篇文章介绍了Spring Boot自动配置的原理,但是对于Spring Boot应用的整个启动流程还是一头雾水,虽然Spring Boot大大简 ...

  6. Hasor:生命周期

    为什么80%的码农都做不了架构师?>>>    首先引用Wiki的介绍一下Hasor:     "Hasor是一款开源框架.它是为了解决企业模块化开发中复杂性而创建的.Ha ...

  7. Spring5源码 - 07 Spring Bean 生命周期流程 源码解读02

    文章目录 Pre 通俗流程 finishBeanFactoryInitialization Pre Spring5源码 - 06 Spring Bean 生命周期流程 概述 01 接上文 通俗流程 下 ...

  8. autofac 作用域_控制作用域和生命周期

    控制作用域和生命周期¶ 这个有一篇学习Autofac控制作用域和生命周期很好的文章 Nick Blumhardt's Autofac lifetime primer. 里面有很多东西可以学习, 并且有 ...

  9. android 锁屏的生命周期_Activity的生命周期的七个场景

    简单介绍Activity生命周期经常调用的几个方法: onCreate()与onDestroy() Activity的创建与销毁,处于Activity的entire lifetime完整生命周期 on ...

最新文章

  1. AI一分钟 | Google预借京东卖音箱;AI Dota击败人类玩家;思必驰5亿融资搞芯片
  2. IT人士在职场中需要哪些Skill?
  3. 成功解决TypeError: __init__() got an unexpected keyword argument 'n_iterations'
  4. Vue的表单组件之复选框
  5. Mysql中使用命令行导入.sql文件新建数据库表(图文)
  6. Java并发编程的艺术(十)——Java中的锁(5)
  7. 教你些技巧,用 Python 自动化办公做一些有趣的事情 太方便了
  8. 【英语学习】【English L06】U06 Banking L5 I'd like to change Chinese *yuan* into pounds
  9. Android software RD engineer能力模型
  10. 长距离大口径输水PCCP管道泄漏监测系统解决方案
  11. Beyond Compare代码对比工具国内镜像下载
  12. 身份证号判断和年龄计算
  13. 为什么我不推荐大家去外包公司
  14. opencv+ffmpeg+Qt h264录制
  15. 简单使用Python爬虫爬取淘宝网页商品信息
  16. 拖延症:关于如何停止拖延的科学指南
  17. [超级码力在线编程大赛初赛(二)] 4.小栖的金字塔 施罗德数(超级卡特兰数)
  18. 手机端html跑马灯效果,使用css3和js在手机上实现简单的跑马灯效果
  19. /dev/shm虚拟内存打满与inode号爆满
  20. Kotlin学习笔记1——变量、函数

热门文章

  1. 赶紧收藏起来!新手做自媒体撰了2.4w,全靠这3个素材工具
  2. 人性趋利——天下熙熙,皆为利来
  3. 优化博客园的JS代码总结
  4. 模糊搜索下拉框(可输入+自动匹配)
  5. X-Argus X-Gorgon X-Ladon findcrypt和findhash查找疑似加密函数(五)
  6. 前端实现模糊搜索功能
  7. oracle imp 00061,重要参数:施迈茨真空泵EVE-TR 4 AC3
  8. RED(Random Early Detection/随机早期检测)
  9. 微信 移动框架 php,weiphp该如何使用?
  10. 艾美捷支原体检测试剂盒说明书