美文网首页
golang并发中的GPM

golang并发中的GPM

作者: 化蝶飞618 | 来源:发表于2019-12-30 17:46 被阅读0次

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

  • g0和m0
    系统中的每个M都会拥有一个特殊的Goroutine----g0,是系统在初始化M时候创建,他包含了各种调度、垃圾回收和栈管理等程序。其他的G被称为用户G,这个特殊的可以称为系统G。

相关文章

  • golang并发中的GPM

    java中如何执行的并发 GPM和他们的不同之处 什么是G G是goroutine的简称,代表一段需要被并发执行的...

  • Go GPM 模型

    GPM 模型 golang 在系统调度的基础上实现了自己的 goroutine 调度器,即 GPM 模型。goro...

  • Golang 中 GPM 之 G 的执行(一、准备阶段)

    从之前的文章《Golang 中 GPM 之 G 从哪里来》[http://mp.weixin.qq.com/s?_...

  • GPM调度模型

    目录 1.什么是进程调度2.并发与并行3.进程、线程与协程4.Golang的调度机制——GPM模型5.总结 1. ...

  • 为Arch Linux添加鼠标支持(gpm)

    gpm的安装 在Arch Linux中安装gpm$ pacman -S gpm 如果你正在使用触控板,需要安装一下...

  • Golang并发操作变量需要注意的问题

    思考源于这个问题: golang 中并发读写同一个变量会出现部分错乱吗? 要记得golang中变量的赋值不是并发安...

  • Golang GPM 模型剖析

    本文使用 golang 1.17 代码,如有任何问题,还望指出。 线程、内核线程和用户线程区别 线程:从内核角度来...

  • 2019-03-20

    1. go的并发调度模型? go的并发调度模型可以简称为GPM模型,其中G代表goroutine,P代表gorou...

  • Golang的并发编程

    Golang中的并发编程 Golang语言中,并发使用的协程的机制,实现起来也是十分的方便,使用go关键字即可。 ...

  • Golang的并发编程

    golang是为并发而生的语言。优雅的并发编程范式,完善的并发支持,出色的并发性能是golang区别于其他语言的一...

网友评论

      本文标题:golang并发中的GPM

      本文链接:https://www.haomeiwen.com/subject/fdtmoctx.html