Rust 实战丨手写一个 RwLock

通过三个渐进式版本深入理解 RwLock 的实现原理,从基础功能到性能优化再到公平性保证,掌握原子操作、内存顺序、条件变量等并发编程核心技术,并学会解决写饥饿等实际问题。

rust

Rust 实战丨手写一个 Condvar

在多线程编程中,你是否遇到过这样的困扰:消费者线程不断轮询检查数据是否准备好,白白浪费 CPU 资源?或者在生产者-消费者模式中,如何让消费者优雅地等待数据到来?本文将带你手写一个高效的 Condvar(条件变量),解决线程间的等待与唤醒问题。我们将从最基础的实现开始,逐步优化到减少不必要的系统调用,并深入分析内存顺序的选择,让你彻底理解条件变量背后的设计哲学。

rust

Rust 实战丨手写一个 Mutex

本文带你从零开始实现一个 Rust 中的 Mutex 锁,结合 Rust 原子操作和内存顺序的核心知识,逐步揭示 Mutex 背后的等待与唤醒机制。通过阅读本文,你不仅可以掌握如何使用 Rust 的原子 API 实现一个高效的互斥锁,还能深入理解原子操作背后的内存模型,为掌握更复杂的并发编程技巧打下坚实基础。

rust

Rust 原理丨操作系统并发原语

操作系统的并发原语是实现各种锁、条件变量和同步工具的核心基础。无论是 Linux 中被广泛使用的 futex、macOS 中的 pthread 和 os_unfair_lock,还是 Windows 系统上的重量级内核对象、轻量级原语及地址等待机制,本质上都是围绕着三个基本动作展开:wait、wake_one 和 wake_all。本文将通过对三大主流操作系统底层并发原语的梳理与对比,帮助你建立统一的认知框架,更深入地理解并发编程背后的系统级支持,避免在实践和学习中被五花八门的概念搞晕。

rust

Rust 原理丨从汇编角度看原子操作

本篇文章沿着 “CPU → 汇编指令 → Rust 原子语义” 的链路,带你拆解 Atomic* 背后到底发生了什么。我们先用 x86-64 与 ARM64 的真实编译结果对比 Ordering 的生成代码,再结合缓存一致性协议与编译器重排规则,解释为什么同一行 Rust 代码在不同平台会呈现截然不同的机器级行为。读完后,你不必死记硬背五种内存顺序,也能判断何时选 Relaxed、何时必须上 SeqCst,并掌握一套“看 asm → 辨语义 → 做权衡”的分析方法,为写锁、并发容器或性能调优提供根底。

rust

Rust 实战丨手写一个 Arc

本文手把手带你拆解并重构 Arc:从单线程引用计数,到跨线程 Weak 防环,再到剥离强/弱引用与内存序优化,层层深入 Rust 并发与内存模型核心。

rust

Rust 实战丨手写一个 oneshot channel

本文从零开始,通过多版本迭代,实现一个安全的 Rust oneshot channel。我们将深入 `AtomicBool`、`UnsafeCell`、`MaybeUninit` 的使用,通过 `Drop` 管理内存,并最终以 `Sender`/`Receiver` 模式和所有权机制封装 `unsafe`,构建健壮的并发原语。

rust

Rust 实战丨手写一个 SpinLock

本文以三段迭代示例演示如何在 Rust 中手写自旋锁:从最小化原子标志实现,到绑定受保护数据,再到借助 RAII 实现自动解锁。过程中深入讲解 Atomic 内存顺序、UnsafeCell 内部可变性、Send/Sync 并发标记,以及 Drop/Deref 零成本抽象,帮助读者理解自旋锁适用场景与潜在陷阱,并掌握将并发安全问题前移到编译期的工程思维。

rust

Rust 入门丨01 类型系统概述

本文从编程语言的角度介绍了类型系统的基本概念,并详细阐述了 Rust 类型系统的特点,包括静态类型、强类型、所有权系统等核心特性。

rust

Rust 训练营总结丨第三次入门 Rust

本文记录了我在 Rust 训练营的学习历程,也映射了我 2024 年全年的成长轨迹。

rust
123