Golang线程模型
常用线程调度模型
1、N:1,其中几个用户空间线程在一个OS线程上运行。这样做的优点是可以非常快速地进行上下文切换,但不能利用多核系统的优势。
2、1:1,即一个执行线程与一个OS线程匹配。它利用了机器上的所有内核,但是上下文切换很慢,因为它必须通过操作系统进行捕获。
3、M:N,也是Go目前使用的。它将任意数量的goroutines调度到任意数量的OS线程上。您可以快速切换上下文,并利用系统中的所有核心。这种方法的主要缺点是它增加了调度器的复杂性。
Golang线程调度模型详解
为了完成调度任务,Go调度