Introduction
1.
This Book
1.1.
A Message
2.
Concurrency
2.1.
Keywords
3.
Atomics
3.1.
What are Memory Orderings?
3.2.
Compare-and-Swap
4.
Introduction to the Paper
4.1.
Structure: Memory
4.2.
Structure: Synchronization
4.3.
The Algorithm
5.
Starting Code
6.
Memory Allocation
6.1.
get
6.2.
allocate_bucket
6.3.
reserve
7.
Operations
7.1.
new
7.2.
complete_write
7.3.
push
7.4.
pop
7.5.
size
7.6.
tests
8.
Memory Reclamation
8.1.
Hazard Pointers
8.2.
Fixing complete_write
8.3.
Fixing push & pop
8.4.
Dropping the vector
8.5.
Final tests!
9.
Reflections
9.1.
A Potential Optimization
9.2.
unsafe code
9.3.
Atomic Intuition
9.4.
Debugging
10.
Acknowledgements
11.
Helpful Resources
Light
Rust
Coal
Navy
Ayu
Building a Rusty, Lock-free Dynamically Resizable Array
Acknowledgements
Thank you to my advisor and my friends for your feedback and support.