清新楼房

文章
5
资源
0
加入时间
2年10月21天

Golang深入理解GPM模型

1.goroutine简介多进程、多线程已经提高了系统的并发能力,在高并发场景下,如果一个线程阻塞cpu,那就需要切换其他线程中去执行,为每个任务都创建一个线程成本比较高,因此又衍生出协程。我们知道一个线程分为“内核态“线程和”用户态“线程,goroutine是Go语言实现的用户态线程, 协程跟线程是有区别的,线程由CPU调度是抢占式的,协程由用户态调度是协作式的,一个协程让出CPU后,才执行下一个协程。思考为什么协程和线程是M:N映射关系?M个协程可以在用户态线程即完成切换,不会陷入到内核态