goroutine调度实现原理
goroutine调度器的实现主要是如下3个文件:
-
runtime/runtime2.go
-
runtime/proc.go
-
runtime/asm_amd64.s
花了一天的时间了阅读这部分代码实现,主要目的是了解goroutine调度器的基本运作过程和整体实现原理,并不对细节进行过多深入,但即便是如此“不求甚解”的阅读,在很多地方仍然是感到一头雾水,比如:
-
goroutine调度循环
-
goroutine的创建及放入runq的操作
好在网上有很多大牛也做过这一部分的源代码详解,通过阅读他们的文章,相关的疑惑才稍微逐渐的解开。
ps: go version go1.18.10 linux/arm64
[参看]: