Golang并发调度的GMP模型
Golang的一大特色就是Goroutine。Goroutine是Golang支持高并发的重要保障。Golang可以创建成千上万个Goroutine来处理任务,将这些Goroutine分配、负载、调度到处理器上采用的是G-M-P模型。
什么是Goroutine
Goroutine = Golang + Coroutine。Goroutine是golang实现的协程,是用户级线程。Goroutine具有以下特点:
- 相比线程,其启动的代价很小,以很小栈空间启动(2Kb左右)
- 能够动态地伸缩栈的大小,最大可以支持到Gb级别
- 工作在用户态,切换成很小
- 与线程关系是n:m,即可以在n个系统线程上多工调度m个Goroutine

