Sync Primitives
RwLock (Reader Writer Lock)
- An
RwLock
is basically aRefCell
whose counters are kept using atomics - the
read
(borrow equivalent for RefCell) andwrite
(borrow_mut equivalent of Refcell) always return the ref/refmut instead of an option so that we dont have to manually poll in a loop. They block the current thread till its available if the borrow cannot succeed yet
Mutex
- A
Mutex
can be considered as a simplified version ofRwLock
where ther is only borrow_mut. So aMutex
doesnt have to keep a state to count the no. of readers becuse its either we have the reference or someone else has it.Mutex
also blocks the thread till it gets a value
Arc (Atomic reference counted)
Reference Video timestamp | Rust doc Arc
- Thread safe reference counting pointer
- Almost similar to
Rc
except that it uses thread safe atomic operations to manage the reference count