2 unstable releases
0.2.0 | Oct 20, 2022 |
---|---|
0.1.0 | Oct 16, 2015 |
#1063 in Concurrency
76KB
933 lines
Atomic-Cell
A crate for lock-free, thread-safe, mutable memory locations.
lib.rs
:
This crate provides a thread-safe mutable memory location called
AtomicCell
.
This type is equivalent to Cell
, except it can also be shared among
multiple threads.
How it Works
When constructing an AtomicCell
, callers select an AtomicStorage
implementation that will fit the data they wish to store. (e.g. AtomicU8
can be used to hold a #[repr(u8)]
enum)
Under the hood, the desired type is transmuted to the corresponding base type of the storage, and atomic operations are executed on the storage.
The result is that the user should be able to seamlessly interact with the
AtomicCell
almost as if it were a native atomic.
Two implementations are defined generic
and macros
. The generic
implementation relies on the AtomicStorage
trait, whereas the macros
implementation relies on the bare functions. This enables the macros
implementation to have slightly more const
functions in stable rust.
Dependencies
~215KB