Below you will find pages that utilize the taxonomy term “G0”
February 11, 2021
g0 特殊的goroutine
"\u003cp\u003e在上篇 \u003ca href=\"https://blog.haohtml.com/archives/21010\"\u003e《golang中G、P、M 和 sched 三者的数据结构》\u003c/a\u003e文章中,我们介绍了\u003ccode\u003eG\u003c/code\u003e、\u003ccode\u003eM\u003c/code\u003e 和 \u003ccode\u003eP\u003c/code\u003e 的数据结构,其中M结构体中第一个字段是 \u003ccode\u003eg0\u003c/code\u003e,这个字段也是一个 \u003ccode\u003egoroutine\u003c/code\u003e,但和普通的 \u003ccode\u003egoroutine\u003c/code\u003e 有一些区别,它主要用来实现对 goroutine 进行调度,下面我们将介绍它是如何实现调度goroutine的。\u003c/p\u003e\n\u003cp\u003e另外还有一个 \u003ccode\u003em0\u003c/code\u003e , 它是一个全局变量,与 \u003ccode\u003eg0\u003c/code\u003e 的区别如下\u003cimg src=\"https://blogstatic.haohtml.com/uploads/2021/03/8e229b7806870bf4f17da207665b8a43.jpg\" alt=\"\"\u003eM0 与 g0的区别\u003c/p\u003e\n\u003cp\u003e本文主要翻译自 \u003ca href=\"https://medium.com/a-journey-with-go/go-g0-special-goroutine-8c778c6704d8\"\u003eGo: g0, Special Goroutine\u003c/a\u003e 一文,有兴趣的可以查阅原文,作者有一系列高质量的文章推荐大家都阅读一遍。ℹ️ 本文基于 Go 1.13。\u003c/p\u003e\n\u003cp\u003e我们知道在Golang中所有的\u003ccode\u003egoroutine\u003c/code\u003e的运行都是由\u003ccode\u003e调度器\u003c/code\u003e来负责管理的,go调度器尝试为所有的\u003ccode\u003egoroutine\u003c/code\u003e来分配运行时间,当有\u003ccode\u003egoroutine\u003c/code\u003e被阻塞或终止时,调度器会通过对\u003ccode\u003egoroutine\u003c/code\u003e 进行调度以此来保证所有CPU都处于忙碌状态,避免有CPU空闲状态浪费时间。\u003c/p\u003e\n\u003ch2 id=\"goroutine-切换规则\"\u003egoroutine 切换规则\u003c/h2\u003e\n\u003cp\u003e在此之前我们需要记住一些goroutine切换规则。runtime源码\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e// …\u003c/code\u003e\u003c/pre\u003e"