05 2019 档案

摘要:本文是《Go语言调度器源代码情景分析》系列的第20篇,也是第五章《主动调度》的第1小节。 Goroutine的主动调度是指当前正在运行的goroutine通过直接调用runtime.Gosched()函数暂时放弃运行而发生的调度。 主动调度完全是用户代码自己控制的,我们根据代码就可以预见什么地方一定 阅读全文
posted @ 2019-05-28 16:40 爱写程序的阿波张 阅读(1548) 评论(0) 推荐(0)
摘要:本文是《Go语言调度器源代码情景分析》系列的第19篇,也是第四章《Goroutine被动调度》的第2小节。 本文需要重点关注: 如何唤醒睡眠中的工作线程 如何创建新的工作线程 如何唤醒睡眠中的工作线程 如何创建新的工作线程 上一篇文章我们分析到了ready函数通过把需要唤醒的goroutine放入运 阅读全文
posted @ 2019-05-24 10:44 爱写程序的阿波张 阅读(1510) 评论(0) 推荐(0)
摘要:本文是《Go语言调度器源代码情景分析》系列的第18篇,也是第四章《Goroutine被动调度》的第1小节。 前一章我们详细分析了调度器的调度策略,即调度器如何选取下一个进入运行的goroutine,但我们还不清楚什么时候以及什么情况下会发生调度,从这一章开始我们就来讨论这个问题。 总体说来,go语言 阅读全文
posted @ 2019-05-22 16:32 爱写程序的阿波张 阅读(1562) 评论(0) 推荐(0)
摘要:序言 最近一位非常热心的网友建议结合demo来分析一下goroutine的调度器,而且还提供了一个demo代码,于是便有了本文,在此对这位网友表示衷心的感谢! 这位网友提供的demo程序可能有的gopher以前见过,已经知道了具体原因,但本文假定我们是第一次遇到这种问题,然后从零开始,通过一步一步的 阅读全文
posted @ 2019-05-20 09:08 爱写程序的阿波张 阅读(5090) 评论(2) 推荐(5)
摘要:本文是《Go语言调度器源代码情景分析》系列的第17篇,也是第三章《Goroutine调度策略》的第2小节。 上一小节我们分析了从全局运行队列与工作线程的本地运行队列获取goroutine的过程,这一小节我们继续分析因无法从上述两个队列中拿到需要运行的goroutine而导致的从其它工作线程的本地运行 阅读全文
posted @ 2019-05-17 15:30 爱写程序的阿波张 阅读(1950) 评论(0) 推荐(1)
摘要:本文是《Go语言调度器源代码情景分析》系列的第16篇,也是第三章《Goroutine调度策略》的第1小节。 在调度器概述一节我们提到过,所谓的goroutine调度,是指程序代码按照一定的算法在适当的时候挑选出合适的goroutine并放到CPU上去运行的过程。这句话揭示了调度系统需要解决的三大核心 阅读全文
posted @ 2019-05-15 08:37 爱写程序的阿波张 阅读(1567) 评论(0) 推荐(1)
摘要:本文是《Go语言调度器源代码情景分析》系列的第15篇,也是第二章的第5小节。 上一节我们说过main goroutine退出时会直接执行exit系统调用退出整个进程,而非main goroutine退出时则会进入goexit函数完成最后的清理工作,本小节我们首先就来验证一下非main gorouti 阅读全文
posted @ 2019-05-13 15:23 爱写程序的阿波张 阅读(1891) 评论(1) 推荐(0)
摘要:本文是《Go语言调度器源代码情景分析》系列的第14篇,也是第二章的第4小节。 上一节我们通过分析main goroutine的创建详细讨论了goroutine的创建及初始化流程,这一节我们接着来分析调度器如何把main goroutine调度到CPU上去运行。本节需要重点关注的问题有: 如何保存g0 阅读全文
posted @ 2019-05-09 15:29 爱写程序的阿波张 阅读(2423) 评论(0) 推荐(0)
摘要:这一节我们来看程序中的第一个goroutine是如何创建的 阅读全文
posted @ 2019-05-07 14:41 爱写程序的阿波张 阅读(2861) 评论(0) 推荐(0)
摘要:本章将以一个简单的Hello World程序为例,通过跟踪其从启动到退出这一完整的运行流程来分析Go语言调度器的初始化、goroutine的创建与退出、工作线程的调度循环以及goroutine的切换等重要内容。 阅读全文
posted @ 2019-05-05 15:19 爱写程序的阿波张 阅读(3010) 评论(0) 推荐(0)
摘要:本节主要介绍goroutine调度器工作原理及所涉及到的重要结构体与全局变量。 阅读全文
posted @ 2019-05-02 14:43 爱写程序的阿波张 阅读(3131) 评论(0) 推荐(0)
摘要:本文就线程本地存储的用法及gcc对其实现原理做个简单的介绍。 阅读全文
posted @ 2019-05-01 18:04 爱写程序的阿波张 阅读(6034) 评论(0) 推荐(1)