概述:
本文主要讨论一个由go编译出来的程序,在进入main.main函数之前进行的一系列初始化。以及我们如何利用init做好自己需要的工作
简述结论:
- 所有init在同一个goroutine内执行
- init函数结束后才会main.main
- rutime1.go
args():整理命令行参数
func args(c int32, v **byte) {
argc = c
argv = v
sysargs(c, v)
}
- os_linux.go
osinit:确定cpu数量
func osinit() {
ncpu = getproccount()
physHugePageSize = getHugePageSize()
...
}
- proc.go
schedinit():非常关键几乎所有我们所关注的运行时初始化构造都在此调用
func schedinit(){
...