加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

跟雨痕大大看golang源码-01初始化

发布时间:2020-12-16 18:28:27 所属栏目:大数据 来源:网络整理
导读:最近看了下的雨痕大大写的go1.5源码剖析的pdf,觉得有必要写点东西来巩固一下。 本人水平有限,第一次写,大家轻喷

最近看了下的雨痕大大写的go1.5源码剖析的pdf,觉得有必要写点东西来巩固一下。

本人水平有限,第一次写,大家轻喷啊。

01初始化
一开始雨痕大大就通过汇编代码找到了初始化里面几个关键的函数。

  1. runtime.args 没什么好看的就是传入cmd的运行参数。
  2. runtime.osinit 就是看一下系统的核数。
  3. runtime.schedinit比较重要

runtime.schedinit
有初始化栈,内存分配器和调度器,垃圾回收器,还会进行一次procresize调整一下GMP的并发调度中P的数量。

  1. runtime·newproc(SB)和runtime·mstart(SB)就是用来运行runtime.main函数的。

  2. runtime·main 会启动 sysmon一个辅助控制goroutine和垃圾回收程序。runtime_init runtime包的init函数。gcenable 启动gc的。 main_init() 初始化用户包的init函数。main_main用户逻辑入口

最后雨痕大大给了个强调:

  • 所有init函数都在同一个goroutine内运行。
  • 所有init函数结束后才会执行main.main函数。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读