Gorutine

Gorutine 是 Go 语言实现的一种协程 (Coroutine)。它完全运行在用户态进程下进行并发调度。

GMP 模型与调度器

调度器跟踪

使用 GODEBUG=schedtrace=DURATION 环境变量运行 Go 程序以启用调度程序跟踪。(DURATION 是以毫秒为单位的输出周期。)

调度器跟踪详见这里

GMP 模型的阻塞情况

GMP 模型的阻塞可能发生在下面几种情况:

  • I/O,select
  • block on syscall
  • channel
  • 等待锁
  • runtime.Gosched()