携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第3天,点击查看活动详情
在本系列的前两部分中,我主要介绍了Golang中GMP模型的基本概念和一些特殊的机制,在本部分中我将从源码这个层次,来描述一下main函数运行背后的故事。
以main函数作为整个程序的入口,这应该已经是编程语言界的一个不成文规定了。网上一些技术大牛也经常是围绕main函数来展开对底层技术细节的讲解,可见掌握main函数执行的具体流程对于了解一门编程语言背后的设计哲学与理念来说至关重要。
GOMAXPROCS
可以看到,调度永远是一套编程语言底层最重要的实现,在上述流程中,每次涉及到选择时,就会遵循上篇文章中所提及的方式进行决策,调度器的生命周期几乎和Go程序的执行全流程相伴而生。涉及到此部分源码时,可能涉及到一些CGO甚至汇编的知识,这对普通的server开发工程师可能是一种不一样的体验。