Crate atomptr[−][src]
A safe, strongly typed (generic) atomic pointer abstraction to build
datastructures, and lock-free algorithms on top of. Only uses
libstd
.
The standard library contains an AtomicPtr
type, which by itself
isn't very ergonomic to use, because it deals with raw pointers. This
library assumes that types can always be heap allocated, wrapping them
in a Box<T>
, and provides a nicer (and safe!) abstraction for
std::sync::atomic::AtomicPtr
. Using this crate is fairely
self-explanatory:
use atomptr::AtomPtr; struct MyData { name: String } let data = MyData { name: "Kookie".into() }; let a = AtomPtr::new(data); println!("Name is: {}", a.get_ref().name); let old_ref = a.swap(MyData { name: "Bob".into() }); println!("Name now is: {}, was {}", a.get_ref().name, old_ref.name);
Note that the type that is returned by get_ref
and swap
is
Ref<T>
, which means that the old data is not de-allocated after a
swap, before this last reference goes out of scope. You can of course
always manually call drop()
on it.
Structs
AtomPtr | A safe atomic pointer wrapper |
Ref | An alias for a referenced pointer |