操作系统并不知道有协程的存在,操作系统只知道它运行了一个内核态的线程
通过这个,我们知道了它们互相之间的关系
关系
进程与线程之间为1:N关系
线程与协程之间为1:N关系
操作系统的最小调度单位为线程
线程可以运行协程
在GMP...中,线程与协程之间的关系为M:N,协程A可能会在线程1执行,也可能下一次在线程2执行
GMP调度模型
在go语言中,主要分为3个对象:M(thread),G(goroutine),P(processor...关于GMP数量的问题
G
协程数量在理论上是无限的,每个协程需要占用大概4kb的内存,只要内存足够可以一直创建,只要使用go关键字即可创建
M
M在有空闲P需要执行时就会创建,每个P都得绑定一个M,如果一个