go的调度机制
摸清go的调度机制之前,先来说说线程模型,一般分为三种,取决于用户级线程和内核级线程的对应关系。
第一种:N:1,多个用户态的线程对应着一个内核线程,这种模型上下文切换成本低,但不能利用多核。
第二种:1:1,一个用户态线程对应一个内核线程,这种模型可以利用多核,但上下文切换成本高。
第三种:M:N,M个用户线程对应N个内核线程,结合上面两种模型的优点,既能利用多核资源也能尽可能减少上下文切换成本,但是调度算法的实现成本偏高。
Go语言的线程模型就是这一种特殊的线程模型,也就是GPM调度模型
GP



