async/await 到底在等什么:从状态机到 ConfigureAwait
把一个 async 方法编译出来看看它变成了什么,再解释 ConfigureAwait(false)、同步上下文和死锁的真实成因,最后给出库里该不该加它的判断标准。
四个长期维护的主题,按主题沉淀笔记而不是按时间堆文章
async/await 状态机、同步上下文、取消传播、并发限流与背压控制。
Span<T>、对象池、GC 模式选择,用 BenchmarkDotNet 和分配数据说话。
依赖注入生命周期、分层边界、配置与选项模式、可测试性设计。
源生成器、分析器、AOT 与裁剪,把握住编译期就能少写运行时代码。
全部为原创笔记,示例代码基于 .NET 10 / C# 14 验证
把一个 async 方法编译出来看看它变成了什么,再解释 ConfigureAwait(false)、同步上下文和死锁的真实成因,最后给出库里该不该加它的判断标准。
从解析一段协议报文开始,用 ref struct、stackalloc 和切片把临时数组全部消掉,并说明 Span 为什么不能跨 await 保存。
Singleton、Scoped、Transient 的边界到底在哪里,为什么在 HostedService 里直接注入 DbContext 会出错,以及正确的做法与验证方式。
取消不是中断线程,而是约定。讲清楚传递链路、ThrowIfCancellationRequested 的位置、超时与取消的区别,以及常见的资源泄漏。
写一个真正能用的增量源生成器,为标记类型自动生成映射代码,并讨论缓存、增量比较和调试方式这些容易翻车的地方。