专栏名称: GoCN
最具规模和生命力的 Go 开发者社区
目录
相关文章推荐
今日悉尼  ·  刚刚!悉尼Surry ... ·  1 周前  
今日悉尼  ·  刚刚!悉尼Surry ... ·  1 周前  
今天看啥  ›  专栏  ›  GoCN

Go的GMP模型真的“简单”

GoCN  · 公众号  ·  · 2024-08-07 08:00

文章预览

前言 关于GMP模型网上已经有很多文章,讲的内容大多都是如下图的逻辑,本系列不再赘述。本系列换个视角,核心搞清楚两个问题: GMP到底是什么? goroutine如何恢复和保存上下文的? 正文开始。 GMP 只是结构体 GMP 并不是你想象的那么神奇的存在,其实就是普通的结构体,如同你写业务代码定义的结构体一样,如下: // Goroutine // 代码位置:go1.19/src/runtime/proc.go type  g  struct  {     stack     stack      //...略...     gopc       uintptr       startpc    uintptr     sched      struct  {         sp    uintptr         pc    uintptr          //...略...         bp    uintptr      }      //...略... } // Machine // 代码位置:go1.19/src/runtime/proc.go type  m  struct  {     g0            *g           //...略...     curg          * ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览