|
Arc: shared ownership across threads
|
Easy
|
Primitives
|
|
|
A single-producer single-consumer ring buffer
|
Hard
|
End-to-End
|
|
|
A store-buffer memory-model interpreter
|
Hard
|
Research
|
|
|
Atomics: counters, flags and fetch_*
|
Medium
|
Primitives
|
|
|
Balanced ranges: the arithmetic before the threads
|
Easy
|
Primitives
|
|
|
Barrier: keeping workers in lock step
|
Medium
|
End-to-End
|
|
|
Build a spinlock from AtomicBool and UnsafeCell
|
Hard
|
End-to-End
|
|
|
Capstone: build a thread pool
|
Hard
|
End-to-End
|
|
|
CAS loops: compare_exchange and fetch_update
|
Hard
|
Framework
|
|
|
Coordinate two threads with a condition variable
|
Hard
|
Framework
|
|
|
JoinHandle, panics and thread::Result
|
Medium
|
Primitives
|
|
|
Join two futures and keep both results
|
Medium
|
Framework
|
|
|
Keep worker-pool results in input order
|
Medium
|
Framework
|
|
|
Let a channel receiver finish by dropping its senders
|
Medium
|
Framework
|
|
|
move closures: why the compiler forces your hand
|
Easy
|
Primitives
|
|
|
mpsc channels: message passing basics
|
Easy
|
Primitives
|
|
|
Mutex and MutexGuard: unlocking with RAII
|
Easy
|
Primitives
|
|
|
OnceLock: initialize shared state once
|
Medium
|
Primitives
|
|
|
park and unpark: building a blocking primitive by hand
|
Hard
|
Framework
|
|
|
Poisoning: what a panic does to a lock
|
Medium
|
Framework
|
|
|
Prevent deadlocks with consistent lock ordering
|
Hard
|
End-to-End
|
|
|
Release a read guard before acquiring a write lock
|
Hard
|
Framework
|
|
|
Safe parallel mutation with chunks_mut
|
Medium
|
Framework
|
|
|
Scoped threads: borrow, do not clone
|
Easy
|
Primitives
|
|
|
Send: what it actually guarantees
|
Medium
|
Primitives
|
|
|
Share a mutable vector with Arc and Mutex
|
Easy
|
Primitives
|
|
|
static mut and the edition-2024 wall
|
Medium
|
Framework
|
|
|
sync_channel: bounded buffers and backpressure
|
Medium
|
Framework
|
|
|
Sync: T is Sync exactly when &T is Send
|
Medium
|
Primitives
|
|
|
Threads, spawn and join
|
Easy
|
Primitives
|
|
|
Tree traversal with indexed storage and shared locks
|
Medium
|
End-to-End
|
|
|
unsafe impl Send, and the disjoint-capture trap
|
Hard
|
Framework
|
|