Epoch-Based Reclamation:Crossbeam 的实现之道
在无锁编程的世界里,内存回收是最棘手的难题之一。Rust 的 crossbeam 库用基于纪元的回收机制,巧妙地将这一难题化解为三个整数的优雅舞蹈——本文从原理到工程实践,完整剖析这一精妙的并发内存回收技术。
发布来自土法炼钢兴趣小组的知识、笔记、进展和应用。主题包括数据结构和算法、编程语言、网络安全、密码学等。
共 12 篇文章 · 返回首页
在无锁编程的世界里,内存回收是最棘手的难题之一。Rust 的 crossbeam 库用基于纪元的回收机制,巧妙地将这一难题化解为三个整数的优雅舞蹈——本文从原理到工程实践,完整剖析这一精妙的并发内存回收技术。
组装完整 LSM-Tree 存储引擎:DB 接口(Open/Put/Get/Delete/Iterator/Snapshot)、单写多读并发控制、启动恢复,然后用 Rust 重写核心模块,记录 5 个编译器不让我过的故事,最后三方 benchmark 对比。从零写一个 LSM-Tree 存储引擎系列第 5 篇。
多维度对比主流编程语言的内存管理策略,分析吞吐量、延迟与开发效率的权衡。
30 天,87 次编译失败。每一次都是 AI 不理解 Rust 类型系统的证据。按失败模式分类,看看 AI 在哪里系统性地犯错。
拆解 GitHub 高星'无锁'库的真实面目:隐藏的 mutex、被滥用的 memory_order_relaxed、以及 CAS 重试循环的阻塞本质。附 x86 vs ARM 上的行为差异实测。
C++ 的 RAII 有五个逃生舱门:use-after-move、悬垂引用、共享可变、异常安全、裸指针逃逸。Rust 的所有权模型把它们全部焊死了。从 C++ 侧拆解 RAII 的根本缺陷,看 Rust 如何在每个分叉点做出不同选择。
拿仓库里现成的 io_uring echo server 做基线,一行一行往 Rust 翻。记录编译器拦下来的五个瞬间——每一个都对应 C 版本里一个真实的 crash 或泄漏风险。Rust 的价值不在更快,在更难把雷带到线上。
Rust 的所有权系统在 FFI 边界会失效——一旦指针跨过 extern \"C\",borrow checker 就看不到了。本文从 bindgen 自动生成绑定、cbindgen 导出 Rust 接口、内存所有权跨语言传递,到为 C 库编写安全的 Rust wrapper,系统拆解 FFI 实战中的每一个坑。
从 Future::poll 到 work-stealing 调度器,从 Waker vtable 到 mio/epoll I/O 驱动,再到层级时间轮——一层一层拆开 tokio 约 40000 行代码的运行时内核,看看你每写一个 .await 背后到底发生了什么。
safe Rust 的编译器保证有边界。当你做 FFI、裸指针、手动内存布局时,这些保证全部消失。这篇讲怎么在 unsafe 里活着回来。
不是'谁快'——而是'什么维度上谁更合适'。在延迟、吞吐量、内存占用、编译速度、并发模型五个维度上正面对比,用同一个任务的三种实现说话。
五篇长文,从 LSM-Tree 的设计哲学讲到完整 KV 引擎实现,最后用 Rust 重写并三方 benchmark 对比。每篇含完整 C 代码、架构图、数学推导。