参考资料 - schedule 循环如何运转
上一节,我们讲完 main goroutine 以及普通 goroutine 的退出过程。main goroutine 退出后直接调用 exit(0) 使得整个进程退出,而普通 goroutine 退出后,则进行了一系列的调用,最终又切到 g0 栈,执行 schedule 函数。
873 字
|
4 分钟
抢占进行系统调用的 P - 调度器
在 runtime.main() 函数中,执行 runtimeinit() 前,会启动一个 sysmon 的监控线程,执行后台监控任务:
2840 字
|
14 分钟
一个调度相关的陷阱 - 调度器
由于 Go 语言是协作式的调度,不会像线程那样,在时间片用完后,由 CPU 中断任务强行将其调度走。对于 Go 语言中运行时间过长的 goroutine,Go scheduler 有一个后台线程在持续监控,一旦发现 goroutine 运行超过 10 ms,会设置 goroutine 的“抢占标志位
521 字
|
3 分钟
什么是 sheduler - 调度器
Go 程序的执行由两层组成:Go Program,Runtime,即用户程序和运行时。它们之间通过函数调用来实现内存管理、channel 通信、goroutines 创建等功能。用户程序进行的系统调用都会被 Runtime 拦截,以此来帮助它进行调度以及垃圾回收相关的工作。
1525 字
|
8 分钟
什么是workstealing - 调度器
Go scheduler 的职责就是将所有处于 runnable 的 goroutines 均匀分布到在 P 上运行的 M。
414 字
|
2 分钟
调整 SP - 调度器
上一节我们说完了 GPM 结构体,这一讲,我们来研究 Go sheduler 结构体,以及整个调度器的初始化过程。
3812 字
|
19 分钟
参考资料 - Go 接口与 C++ 接口有何异同
接口定义了一种规范,描述了类的行为和功能,而不做具体实现。
437 字
|
2 分钟