Recent Posts

CockroachDB StoreLiveness

CockroachDB 在 SIGMOD 2026 发了一篇论文《Scalable Leader Leases for Multi-Consensus Groups in CockroachDB》,这一篇主要介绍其核心机制 StoreLiveness,后面有机会再完整梳理一遍论文。

Threads vs Coroutines

最近没什么动力更新,这篇文章会简单讨论一下线程和协程两种并发模型该如何挑选。

C++ Exception Handling ABI, part 1

C++ 异常处理的第一篇,这一篇先对栈展开的流程建立一个基本概念,下一篇再补充一些深入细节。

Calling Functions

最近一直没空学些东西,这两天看了Calling Functions: A Tutorial这个演讲,它详尽的阐述了在函数调用时,编译器如何选择了正确的函数。从这个视角,能把很多概念串联起来(或者说能把一些常见写法和对应的术语对应起来),也能理解这个过程中背后设计的思想。

Deciphering C++ Coroutines, part 5

coroutine简化了异步代码的编写难度,但在debug时,却无法还原协程之间的异步调用链。这一篇我们研究下folly::AsyncStackFrame是如何记录协程之间的调用关系的。注意本文中所说的“协程“,如无特殊说明,都是指代folly::coro::Task。

Deciphering C++ Coroutines, part 4

本来想直接介绍folly::coro::Task的,但鉴于上一篇展示了太多的”术”,这一片会从宏观视角,理解一个通过协程实现的异步任务,到底需要实现什么东西,以及为什么需要这么实现,所谓“道”。在此基础上,可能会穿插一些folly::coro::Task的内容。这篇很多内容都是总结于这个演讲,也可以看这个更详尽的...

Deciphering C++ Coroutines, part 2

这篇会继续从promise_type的视角,更完整的介绍编译器是如何把协程转换成一个固定的三段式代码,以及promise_type是如何自定义了协程的行为。好在有了上一篇对相关概念的介绍,我们终于可以通过demo来研究其中的奥秘了。