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

最近看了下的雨痕大大写的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函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值