Gorutine
Gorutine 是 Go 语言实现的一种协程 (Coroutine)。它完全运行在用户态进程下进行并发调度。
GMP 模型与调度器
- Golang 调度器 GMP 原理与调度全分析 (链接备份)
- Go语言学习 - GMP模型 (链接备份)
- 图解Go运行时调度器 (链接备份)
- Golang 调度器 GMP 原理与调度全分析 (链接备份)
调度器跟踪
使用 GODEBUG=schedtrace=DURATION
环境变量运行 Go 程序以启用调度程序跟踪。(DURATION 是以毫秒为单位的输出周期。)
调度器跟踪详见这里。
GMP 模型的阻塞情况
GMP 模型的阻塞可能发生在下面几种情况:
- I/O,select
- block on syscall
- channel
- 等待锁
- runtime.Gosched()