Back to Browse

Implementing Hazard Pointers in Rust

38.8K views
Jun 26, 2021
4:55:08

This time, we take a stab at implementing Hazard Pointers (https://erdani.org/publications/cuj-2004-12.pdf) in Rust. We follow along with the C++ implementation in Facebook's Folly library (https://github.com/facebook/folly/blob/master/folly/synchronization/Hazptr.h), as well as the C++ standardization proposal (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p1121r3.pdf). 0:00:00 Introduction 0:00:37 Rust for Rustaceans 0:01:00 Concurrent Memory Reclamation 0:10:32 Hazard Pointers 0:35:27 Folly's Hazard Pointer Interface 0:54:08 Delayed Reclamation 0:58:18 More Folly Interface 1:11:56 A Wild Entity Diagram Appears 1:16:40 Memory Use 1:21:12 More Folly Interface 1:27:50 Starting the Rust Code 1:35:24 Testing Out the Rust Interface 1:42:32 HazPtrHolder::load 2:02:15 HazPtrObject::retire 2:19:43 HazPtrHolder::reset 2:22:50 Unsafe Blocks in Unsafe Fns 2:25:04 Borrow Checker Prevents Misuse 2:27:45 Bad Drop Lint 2:34:15 Dropping in HazPtrDomain::retire 2:46:00 Intermission 2:47:57 Reading Folly's HazPtrDomain::retire 2:59:02 HazPtrDomain::acquire 3:17:32 HazPtrDomain::retire 3:45:57 Specifying a Deleter 4:32:26 Tests Pass? 4:36:12 Eager Reclaiming 4:37:32 Checking Reclamation Behavior 4:52:04 Final Thoughts You can find the code for the implementation at https://github.com/jonhoo/haphazard. Live version with chat: https://youtu.be/4PuE6oMYxeM

Download

0 formats

No download links available.

Implementing Hazard Pointers in Rust | NatokHD