随笔分类 -  GoLang

摘要:原创文章,欢迎转载,转载请注明出处,谢谢。 【目录】 Go runtime 调度器精讲(一):Go 程序初始化 Go runtime 调度器精讲(二):调度器初始化 Go runtime 调度器精讲(三):main goroutine 创建 Go runtime 调度器精讲(四):运行 main g 阅读全文
posted @ 2024-09-17 10:15 hxia043 阅读(182) 评论(0) 推荐(0) 编辑
摘要:原创文章,欢迎转载,转载请注明出处,谢谢。 0. 前言 前面介绍了运行时间过长和系统调用引起的抢占,它们都属于协作式抢占。本讲会介绍基于信号的真抢占式调度。 在介绍真抢占式调度之前看下 Go 的两种抢占式调度器: 抢占式调度器 - Go 1.2 至今 基于协作的抢占式调度器 - Go 1.2 - G 阅读全文
posted @ 2024-09-16 20:20 hxia043 阅读(211) 评论(0) 推荐(1) 编辑
摘要:原创文章,欢迎转载,转载请注明出处,谢谢。 0. 前言 第八讲介绍了当 goroutine 运行时间过长会被抢占的情况。这一讲继续看 goroutine 执行系统调用时间过长的抢占。 1. 系统调用时间过长的抢占 看下面的示例: func longSyscall() { timeout := sys 阅读全文
posted @ 2024-09-16 12:01 hxia043 阅读(140) 评论(0) 推荐(0) 编辑
摘要:原创文章,欢迎转载,转载请注明出处,谢谢。 0. 前言 在 Go runtime 调度器精讲(七):案例分析 一文我们介绍了一个抢占的案例。从案例分析抢占的实现,并未涉及到源码层面。本文将继续从源码入手,看 Go runtime 调度器是如何实现抢占逻辑的。 1. sysmon 线程 还记得 Go 阅读全文
posted @ 2024-09-16 01:10 hxia043 阅读(212) 评论(0) 推荐(1) 编辑
摘要:原创文章,欢迎转载,转载请注明出处,谢谢。 0. 前言 前面用了六讲介绍 Go runtime 调度器,这一讲我们看一个关于调度 goroutine 的程序案例分析下调度器做了什么。需要说明的是,这个程序和抢占有关,抢占目前为止还没有介绍到,如果看不懂也没有关系,有个印象就行。 1. 案例 1 执行 阅读全文
posted @ 2024-09-15 18:21 hxia043 阅读(141) 评论(0) 推荐(1) 编辑
摘要:原创文章,欢迎转载,转载请注明出处,谢谢。 0. 前言 在 Go runtime 调度器精讲(三):main goroutine 创建 介绍了 main goroutine 的创建,文中我们说 main goroutine 和非 main goroutine 有区别。当时卖了个关子并未往下讲,这一讲 阅读全文
posted @ 2024-09-14 18:40 hxia043 阅读(140) 评论(2) 推荐(0) 编辑
摘要:原创文章,欢迎转载,转载请注明出处,谢谢。 0. 前言 在 第四讲 我们介绍了 main goroutine 是如何运行的。其中针对 main goroutine 介绍了调度函数 schedule 是怎么工作的,对于整个调度器的调度策略并没有介绍,这点是不完整的,这一讲会完善调度器的调度策略部分。 阅读全文
posted @ 2024-09-14 12:38 hxia043 阅读(173) 评论(0) 推荐(1) 编辑
摘要:原创文章,欢迎转载,转载请注明出处,谢谢。 0. 前言 皇天不负有心人,终于我们到了运行 main goroutine 环节了。让我们走起来,看看一个 goroutine 到底是怎么运行的。 1. 运行 goroutine 稍微回顾下前面的内容,第一讲 Go 程序初始化,介绍了 Go 程序是怎么进入 阅读全文
posted @ 2024-09-13 17:24 hxia043 阅读(185) 评论(0) 推荐(0) 编辑
摘要:原创文章,欢迎转载,转载请注明出处,谢谢。 0. 前言 回顾下 上一讲 的内容。主线程 m0 蓄势待发,准备干活。g0 为 m0 提供了执行环境,P 和 m0 绑定,为 m0 提供活,也就是 goroutine。那么问题来了,活呢?哪里有活给 m0 干? 这一讲我们将介绍 m0 执行的第一个活,也就 阅读全文
posted @ 2024-09-13 11:23 hxia043 阅读(176) 评论(0) 推荐(0) 编辑
摘要:原创文章,欢迎转载,转载请注明出处,谢谢。 0. 前言 上一讲 介绍了 Go 程序初始化的过程,这一讲继续往下看,进入调度器的初始化过程。 接着上一讲的执行过程,省略一些不相关的代码,执行到 runtime/asm_amd64.s:rt0_go:343L: (dlv) si asm_amd64.s: 阅读全文
posted @ 2024-09-11 18:27 hxia043 阅读(202) 评论(0) 推荐(1) 编辑
摘要:原创文章,欢迎转载,转载请注明出处,谢谢。 0. 前言 本系列将介绍 Go runtime 调度器。要学好 Go 语言,runtime 运行时是绕不过去的,它相当于一层“操作系统”对我们的程序做“各种类型”的处理。其中,调度器作为运行时的核心,是必须要了解的内容。本系列会结合 Go plan9 汇编 阅读全文
posted @ 2024-09-11 11:43 hxia043 阅读(373) 评论(0) 推荐(1) 编辑
摘要:原创文章,欢迎转载,转载请注明出处,谢谢。 Go plan9 汇编系列文章: Go plan9 汇编: 打通应用到底层的任督二脉 Go plan9 汇编:手写汇编 Go plan9 汇编:说透函数栈 Go plan9 汇编:内存对齐和递归 0. 前言 在 Go plan9 汇编系列文章中,介绍了函数 阅读全文
posted @ 2024-09-02 10:29 hxia043 阅读(294) 评论(0) 推荐(1) 编辑
摘要:原创文章,欢迎转载,转载请注明出处,谢谢。 Go plan9 汇编系列文章: Go plan9 汇编: 打通应用到底层的任督二脉 Go plan9 汇编:手写汇编 Go plan9 汇编:说透函数栈 Go plan9 汇编:内存对齐和递归 0. 前言 函数是 Go 的一级公民,本文从汇编角度出发看看 阅读全文
posted @ 2024-09-02 00:35 hxia043 阅读(221) 评论(0) 推荐(1) 编辑
摘要:原创文章,欢迎转载,转载请注明出处,谢谢。 Go plan9 汇编系列文章: Go plan9 汇编: 打通应用到底层的任督二脉 Go plan9 汇编:手写汇编 Go plan9 汇编:说透函数栈 Go plan9 汇编:内存对齐和递归 0. 前言 在 Go plan9 汇编: 打通应用到底层的任 阅读全文
posted @ 2024-09-01 17:17 hxia043 阅读(256) 评论(0) 推荐(0) 编辑
摘要:原创文章,欢迎转载,转载请注明出处,谢谢。 Go plan9 汇编系列文章: Go plan9 汇编: 打通应用到底层的任督二脉 Go plan9 汇编:手写汇编 Go plan9 汇编:说透函数栈 Go plan9 汇编:内存对齐和递归 0. 前言 作为一个严肃的 Gopher,了解汇编是必须的。 阅读全文
posted @ 2024-08-31 17:46 hxia043 阅读(318) 评论(0) 推荐(0) 编辑
摘要:原创文章,欢迎转载,转载请注明出处,谢谢。 0. 前言 在 Go 互斥锁 Mutex 源码分析(一) 一文中分析了互斥锁的结构和基本的抢占互斥锁的场景。在学习锁的过程中,看的不少文章是基于锁的状态解释的,个人经验来看,从锁的状态出发容易陷入细节,了解锁的状态转换过一段时间就忘,难以做到真正的理解。想 阅读全文
posted @ 2024-08-24 13:27 hxia043 阅读(210) 评论(0) 推荐(0) 编辑
摘要:原创文章,欢迎转载,转载请注明出处,谢谢。 0. 前言 锁作为并发编程中的关键一环,是应该要深入掌握的。 1. 锁 1.1 示例 实现锁很简单,示例如下: var global int func main() { var mu sync.Mutex var wg sync.WaitGroup for 阅读全文
posted @ 2024-08-23 15:41 hxia043 阅读(244) 评论(0) 推荐(1) 编辑
摘要:逃逸分析 逃逸分析是 Go 的特性之一,也是面试中经常容易问到的地方。逃逸分析是编译器为变量确定内存分配的一种分析方式。在编译期间,编译器会确定变量在堆中分配还是栈中分配。 在 C/C++ 中,开发者手动分析变量在内存中的堆还是栈中分配,如果内存在堆中分配,不回收释放的话会影响内存泄漏,这对于开发者 阅读全文
posted @ 2024-08-19 15:02 hxia043 阅读(43) 评论(0) 推荐(0) 编辑
摘要:goroutine 在操作系统层面,线程是通过内核调度器调度,通过保存/恢复线程上下文的方式实现线程的调度,内核中的线程是固定大小,不够灵活。相对而言,Go 提供了语言层面的线程 goroutine,它的初始化大小只有 2K,不同于线程操作系统的是它的大小是动态变化的,足够灵活。 Go 实现了调度器 阅读全文
posted @ 2024-08-15 11:05 hxia043 阅读(16) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示