Skip to content

An arbitrary type atomic storage with swap operations.

Notifications You must be signed in to change notification settings

Buzzec/atomic_swapping

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

atomic_swapping

An arbitrary type atomic storage with swap operations.

This is guaranteed lock-free where atomics will be guaranteed lock-free, however it is not guaranteed wait free. Some operations may spin for a short time. All values will be properly dropped.

use atomic_swapping::option::AtomicSwapOption;

fn main() {
  let swap = AtomicSwapOption::new(Some(100usize));
  assert_eq!(swap.clone_inner(), Some(100usize));
  assert_eq!(swap.take(), Some(100usize));
  assert_eq!(swap.take(), None);
  swap.set(Some(200usize));
  assert_eq!(swap.swap(Some(300usize)), Some(200usize));
  assert!(swap.contains_value());
  assert_eq!(swap.clone_inner(), Some(300usize));
}

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

About

An arbitrary type atomic storage with swap operations.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages