协作式的抢占式调度

在 1.14 版本之前,程序只能依靠 Goroutine 主动让出 CPU 资源才能触发调 度。这种方式存在问题有:

  1. 某些 Goroutine 可以长时间占用线程,造成其它 Goroutine 的饥饿
  2. 垃圾回收需要暂停整个程序(Stop-the-worldSTW),最长可能需要几分 钟的时间,导致整个程序无法工作