File:Crust of Rust- Atomics and Memory Ordering.webm
Summary
Description |
English: In this episode of Crust of Rust, we go over Rust's atomic types, including the mysterious Ordering enum. In particular, we explore the std::sync::atomic module, and look at how its components can be used to implement concurrency primitives like mutexes. We also investigate some of the gotchas and sometimes counter-intuitive behaviors of the atomic primitives with different memory orderings, as well as strategies for testing for and debugging errors in concurrent code.
0:00:00 Introduction 0:02:03 What are atomics? 0:05:26 The Memory Model 0:07:33 AtomicUsize 0:12:23 Questions so far 0:20:20 Implementing a (bad) Mutex 0:27:39 Our Mutex works! 0:33:04 Pesky thread interleavings 0:39:42 compare_exchange 0:44:54 Mitigating compare_exchange contention 0:50:43 compare_exchange_weak 0:57:02 Ordering::Relaxed 1:12:13 Ordering::Acquire/Release 1:26:00 The fetch_ methods 1:34:07 Ordering::SeqCst 2:00:08 Breather 2:00:40 ThreadSanitizer 2:05:49 loom 2:22:09 Atomic fences 2:27:27 volatile 2:32:18 AtomicPtr 2:35:13 Atomics through FFI 2:36:44 Consume ordering? 2:38:08 Closing thoughts You can read more about Rust's memory model in the Rust reference at https://doc.rust-lang.org/nightly/reference/memory-model.html and in the C++ memory model documentation at https://en.cppreference.com/w/cpp/atomic/memory_order. Live version with chat: https://www.youtube.com/watch?v=0Vq2aJxwB1o |
Date | |
Source | YouTube: Crust of Rust: Atomics and Memory Ordering – View/save archived versions on archive.org and archive.todayCategory:Media from YouTube |
Author | Jon Gjengset |
Licensing

- You are free:
- to share – to copy, distribute and transmit the work
- to remix – to adapt the work
- Under the following conditions:
- attribution – You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
![]() |
This file, which was originally posted to an external website, has not yet been reviewed by an administrator or reviewer to confirm that the above license is valid. See Category:License review needed for further instructions. |