在学习 Golang 定时器这一块时看到了 Russ Cox 大神的这篇 Proposal ,因为觉得这篇 Proposal 和对应的 Issue 讨论 比较有趣,就把这篇 Proposal 翻译学习一下,最后再讲下自己看了有关讨论的自己的一点感想。
整篇 Proposal 介绍了用于测量经过时间的单调时钟(Monotonic Clock),以及为了引入单调时钟对于 Go Time 的改造。
了解更多
左书祺老师的《Go语言设计与实现》写得很好,不过在阅读过程中发现不少部分还是要结合阅读源码才能够理解其中细节。
因此写下这篇笔记,记录下《Go 语言设计与实现》 6.3 章通过查看资料和阅读源码补充的部分,以免自己回头忘记。
也欢迎熟悉这部分源码或是感兴趣的老板参与讨论。
基于阅读的 Golang 源码版本是 1.16
1. 数据结构1.1 runtime.timer在 6.3.2 数据
了解更多
2024 年,也就是今年,其实个人的轨迹发生了比较大的变化。一直很想写一篇博客来梳理一下这段时间的想法以及后续的安排。不过事实上要把心中飞奔的各种思绪落实到文字,比自己想象中要难得多,加上日常总有些自己觉得优先级更高的事情,就搁置到现在才写了。
不过得益于有定下要写篇文章这样一个计划, 促使了我在平常就在不断思考梳理过去、当下以及未来的事情,使得我对于之后的方向有了更加清晰的认知。
了解更多
最近在重读左书祺老师的《Go 语言设计与实现》 6.3 计时器一章,书中介绍了 Golang 计时器(Timer)的内部实现 —— 所有的计时器都由每个处理器(runtime.p)单独管理,并通过对应的最小四叉堆进行维护:
我阅读的开源代码还不够多,因此对于 Golang 使用四叉堆(Quaternary Heap),而非使用经典的二叉堆(Binary Heap)来维护 Timer 感
了解更多