标签: GM 清除筛选
    Go运行时调度器
    Go运行时调度器

    了解Go运行时对goroutine的调度,对于深入分析和理解并发程序还是很有帮助的。

    当操作系统的线程切换到另一个线程时,CPU会执行一个操作,叫作上下文切换(context switch),操作系统会在中断、系统调用时执行线程上下文切换。线程上下文切换是一种昂贵的操作,因为操作系统需要将用户态转移到内核态,保存要切换线程的执行状态,也就是将一些重要寄存器的值和进程状态保存在线程控制块数据结构中。当恢复线程的运行时,需要将这些状态加载到集群中,从内核态转移到用户态。想想就比较复杂、耗时,如果又涉及进程上下文切换,就更加耗时了。goroutine的调度是由Go运行时控制的,每个编译的Go程序都