golang并发中的GPM

2019-12-30  本文已影响0人  化蝶飞618

java中如何执行的并发

GPM和他们的不同之处

什么是G

G是goroutine的简称,代表一段需要被并发执行的go代码,其中保存了goroutine运行的一些状态信息,这样当goroutine获得执行权的时候,可以获取从哪个指令开始执行。

什么是M

M就是真正服务工作的工作线程,是一个内核级线程,G需要依赖M才可以运行。M行保存了自己使用时候的栈信息、当前正在执行的G信息、以及与之绑定的P。

什么P

P为M的执行提供了上下文,保存了M执行G的一些基本信息,保存了等待执行的G队列......
M只有绑定P才可以去执行G

GPM三者之间的关系

go的并发模型是特有的两级线程模型,有别与线程、协程、线程。又称为go程或者goroutine.
引用《go并发编程》里的一个图片,描述的三者关系十分形象:


image.png

特殊的goroutine

上一篇 下一篇

猜你喜欢

热点阅读