std/sync/atomic
Index
Variables
fn Swap[T: int | uint | i8 | i16 | i32 | i64 | u8 | u16 | u32 | u64 | uintptr](mut &addr: T, new: T, order: memoryOrder): (old: T)
fn CompareAndSwap[T: int | uint | i8 | i16 | i32 | i64 | u8 | u16 | u32 | u64 | uintptr](mut &addr: T, old: T, new: T, order: memoryOrder): (swapped: bool)
fn Add[T: int | uint | i8 | i16 | i32 | i64 | u8 | u16 | u32 | u64 | uintptr](mut &addr: T, delta: T, order: memoryOrder): (new: T)
fn Load[T: int | uint | i8 | i16 | i32 | i64 | u8 | u16 | u32 | u64 | uintptr](&addr: T, order: memoryOrder): T
fn Store[T: int | uint | i8 | i16 | i32 | i64 | u8 | u16 | u32 | u64 | uintptr](mut &addr: T, val: T, order: memoryOrder)
type I8
fn Swap(mut self, new: i8, order: memoryOrder): (old: i8)
fn CompareAndSwap(mut self, old: i8, new: i8, order: memoryOrder): (swapped: bool)
fn Add(mut self, delta: i8, order: memoryOrder): (new: i8)
fn Load(self, order: memoryOrder): i8
fn Store(mut self, val: i8, order: memoryOrder)
type I16
fn Swap(mut self, new: i16, order: memoryOrder): (old: i16)
fn CompareAndSwap(mut self, old: i16, new: i16, order: memoryOrder): (swapped: bool)
fn Add(mut self, delta: i16, order: memoryOrder): (new: i16)
fn Load(self, order: memoryOrder): i16
fn Store(mut self, val: i16, order: memoryOrder)
type I32
fn Swap(mut self, new: i32, order: memoryOrder): (old: i32)
fn CompareAndSwap(mut self, old: i32, new: i32, order: memoryOrder): (swapped: bool)
fn Add(mut self, delta: i32, order: memoryOrder): (new: i32)
fn Load(self, order: memoryOrder): i32
fn Store(mut self, val: i32, order: memoryOrder)
type I64
fn Swap(mut self, new: i64, order: memoryOrder): (old: i64)
fn CompareAndSwap(mut self, old: i64, new: i64, order: memoryOrder): (swapped: bool)
fn Add(mut self, delta: i64, order: memoryOrder): (new: i64)
fn Load(self, order: memoryOrder): i64
fn Store(mut self, val: i64, order: memoryOrder)
type Int
fn Swap(mut self, new: int, order: memoryOrder): (old: int)
fn CompareAndSwap(mut self, old: int, new: int, order: memoryOrder): (swapped: bool)
fn Add(mut self, delta: int, order: memoryOrder): (new: int)
fn Load(self, order: memoryOrder): int
fn Store(mut self, val: int, order: memoryOrder)
type U8
fn Swap(mut self, new: u8, order: memoryOrder): (old: u8)
fn CompareAndSwap(mut self, old: u8, new: u8, order: memoryOrder): (swapped: bool)
fn Add(mut self, delta: u8, order: memoryOrder): (new: u8)
fn Load(self, order: memoryOrder): u8
fn Store(mut self, val: u8, order: memoryOrder)
type U16
fn Swap(mut self, new: u16, order: memoryOrder): (old: u16)
fn CompareAndSwap(mut self, old: u16, new: u16, order: memoryOrder): (swapped: bool)
fn Add(mut self, delta: u16, order: memoryOrder): (new: u16)
fn Load(self, order: memoryOrder): u16
fn Store(mut self, val: u16, order: memoryOrder)
type U32
fn Swap(mut self, new: u32, order: memoryOrder): (old: u32)
fn CompareAndSwap(mut self, old: u32, new: u32, order: memoryOrder): (swapped: bool)
fn Add(mut self, delta: u32, order: memoryOrder): (new: u32)
fn Load(self, order: memoryOrder): u32
fn Store(mut self, val: u32, order: memoryOrder)
type U64
fn Swap(mut self, new: u64, order: memoryOrder): (old: u64)
fn CompareAndSwap(mut self, old: u64, new: u64, order: memoryOrder): (swapped: bool)
fn Add(mut self, delta: u64, order: memoryOrder): (new: u64)
fn Load(self, order: memoryOrder): u64
fn Store(mut self, val: u64, order: memoryOrder)
type Uint
fn Swap(mut self, new: uint, order: memoryOrder): (old: uint)
fn CompareAndSwap(mut self, old: uint, new: uint, order: memoryOrder): (swapped: bool)
fn Add(mut self, delta: uint, order: memoryOrder): (new: uint)
fn Load(self, order: memoryOrder): uint
fn Store(mut self, val: uint, order: memoryOrder)
type Uintptr
fn Swap(mut self, new: uintptr, order: memoryOrder): (old: uintptr)
fn CompareAndSwap(mut self, old: uintptr, new: uintptr, order: memoryOrder): (swapped: bool)
fn Add(mut self, delta: uintptr, order: memoryOrder): (new: uintptr)
fn Load(self, order: memoryOrder): uintptr
fn Store(mut self, val: uintptr, order: memoryOrder)
Variables
const Relaxed = memoryOrder(runtime::atomicRelaxed)
The weakest memory order. There no synchronization or ordering on read/write access. Only the operation is guaranteed to be atomic. Usually performs fastest atomicity performance.
const Acquire = memoryOrder(runtime::atomicAcquire)
Combined with a load, if the loaded value was written by a store operation with a Release or stronger order, all subsequent operations are ordered after that store. Especially all subsequent uploads will see the data written before the repository.
const Release = memoryOrder(runtime::atomicRelease)
When combined with a store, all previous operations are ordered with the Acquire or stronger order before any load of that value. In particular, all previous writes become visible to all threads that perform an Acquire or stronger load of this value.
const AcqRel = memoryOrder(runtime::atomicAcqRel)
Acquire and Release combined. Aka acquire/release. For loads it uses Acquire, for stores it uses Release ordering.
const SeqCst = memoryOrder(runtime::atomicSeqCst)
Default memory order for most things. Aka sequentially consistent. Operations are sequenced consistently.
Swap
fn Swap[T: int | uint | i8 | i16 | i32 | i64 | u8 | u16 | u32 | u64 | uintptr](mut &addr: T, new: T, order: memoryOrder): (old: T)
Atomically stores new into addr and returns the previous addr value. Only integer types are supported.
CompareAndSwap
fn CompareAndSwap[T: int | uint | i8 | i16 | i32 | i64 | u8 | u16 | u32 | u64 | uintptr](mut &addr: T, old: T, new: T, order: memoryOrder): (swapped: bool)
Executes the compare-and-swap operation for value. Only integer types are supported.
Add
fn Add[T: int | uint | i8 | i16 | i32 | i64 | u8 | u16 | u32 | u64 | uintptr](mut &addr: T, delta: T, order: memoryOrder): (new: T)
Atomically adds delta to addr and returns the new addr value. Only integer types are supported.
Load
fn Load[T: int | uint | i8 | i16 | i32 | i64 | u8 | u16 | u32 | u64 | uintptr](&addr: T, order: memoryOrder): T
Atomically loads addr. Only integer types are supported.
Store
fn Store[T: int | uint | i8 | i16 | i32 | i64 | u8 | u16 | u32 | u64 | uintptr](mut &addr: T, val: T, order: memoryOrder)
Atomically stores val into addr. Only integer types are supported.
I8
type I8: i8
The atomic box for i8 type.
Swap
fn Swap(mut self, new: i8, order: memoryOrder): (old: i8)
Atomically stores new value and returns the previous value.
CompareAndSwap
fn CompareAndSwap(mut self, old: i8, new: i8, order: memoryOrder): (swapped: bool)
Executes the compare-and-swap operation.
Add
fn Add(mut self, delta: i8, order: memoryOrder): (new: i8)
Atomically adds delta to value and returns the new value.
Load
fn Load(self, order: memoryOrder): i8
Atomically reads and returns value.
Store
fn Store(mut self, val: i8, order: memoryOrder)
Atomically assigns to value.
I16
type I16: i16
The atomic box for i16 type.
Swap
fn Swap(mut self, new: i16, order: memoryOrder): (old: i16)
Atomically stores new value and returns the previous value.
CompareAndSwap
fn CompareAndSwap(mut self, old: i16, new: i16, order: memoryOrder): (swapped: bool)
Executes the compare-and-swap operation.
Add
fn Add(mut self, delta: i16, order: memoryOrder): (new: i16)
Atomically adds delta to value and returns the new value.
Load
fn Load(self, order: memoryOrder): i16
Atomically reads and returns value.
Store
fn Store(mut self, val: i16, order: memoryOrder)
Atomically assigns to value.
I32
type I32: i32
The atomic box for i32 type.
Swap
fn Swap(mut self, new: i32, order: memoryOrder): (old: i32)
Atomically stores new value and returns the previous value.
CompareAndSwap
fn CompareAndSwap(mut self, old: i32, new: i32, order: memoryOrder): (swapped: bool)
Executes the compare-and-swap operation.
Add
fn Add(mut self, delta: i32, order: memoryOrder): (new: i32)
Atomically adds delta to value and returns the new value.
Load
fn Load(self, order: memoryOrder): i32
Atomically reads and returns value.
Store
fn Store(mut self, val: i32, order: memoryOrder)
Atomically assigns to value.
I64
type I64: i64
The atomic box for i64 type.
Swap
fn Swap(mut self, new: i64, order: memoryOrder): (old: i64)
Atomically stores new value and returns the previous value.
CompareAndSwap
fn CompareAndSwap(mut self, old: i64, new: i64, order: memoryOrder): (swapped: bool)
Executes the compare-and-swap operation.
Add
fn Add(mut self, delta: i64, order: memoryOrder): (new: i64)
Atomically adds delta to value and returns the new value.
Load
fn Load(self, order: memoryOrder): i64
Atomically reads and returns value.
Store
fn Store(mut self, val: i64, order: memoryOrder)
Atomically assigns to value.
Int
type Int: int
The atomic box for int type.
Swap
fn Swap(mut self, new: int, order: memoryOrder): (old: int)
Atomically stores new value and returns the previous value.
CompareAndSwap
fn CompareAndSwap(mut self, old: int, new: int, order: memoryOrder): (swapped: bool)
Executes the compare-and-swap operation.
Add
fn Add(mut self, delta: int, order: memoryOrder): (new: int)
Atomically adds delta to value and returns the new value.
Load
fn Load(self, order: memoryOrder): int
Atomically reads and returns value.
Store
fn Store(mut self, val: int, order: memoryOrder)
Atomically assigns to value.
U8
type U8: u8
The atomic box for u8 type.
Swap
fn Swap(mut self, new: u8, order: memoryOrder): (old: u8)
Atomically stores new value and returns the previous value.
CompareAndSwap
fn CompareAndSwap(mut self, old: u8, new: u8, order: memoryOrder): (swapped: bool)
Executes the compare-and-swap operation.
Add
fn Add(mut self, delta: u8, order: memoryOrder): (new: u8)
Atomically adds delta to value and returns the new value.
Load
fn Load(self, order: memoryOrder): u8
Atomically reads and returns value.
Store
fn Store(mut self, val: u8, order: memoryOrder)
Atomically assigns to value.
U16
type U16: u16
The atomic box for u16 type.
Swap
fn Swap(mut self, new: u16, order: memoryOrder): (old: u16)
Atomically stores new value and returns the previous value.
CompareAndSwap
fn CompareAndSwap(mut self, old: u16, new: u16, order: memoryOrder): (swapped: bool)
Executes the compare-and-swap operation.
Add
fn Add(mut self, delta: u16, order: memoryOrder): (new: u16)
Atomically adds delta to value and returns the new value.
Load
fn Load(self, order: memoryOrder): u16
Atomically reads and returns value.
Store
fn Store(mut self, val: u16, order: memoryOrder)
Atomically assigns to value.
U32
type U32: u32
The atomic box for u32 type.
Swap
fn Swap(mut self, new: u32, order: memoryOrder): (old: u32)
Atomically stores new value and returns the previous value.
CompareAndSwap
fn CompareAndSwap(mut self, old: u32, new: u32, order: memoryOrder): (swapped: bool)
Executes the compare-and-swap operation.
Add
fn Add(mut self, delta: u32, order: memoryOrder): (new: u32)
Atomically adds delta to value and returns the new value.
Load
fn Load(self, order: memoryOrder): u32
Atomically reads and returns value.
Store
fn Store(mut self, val: u32, order: memoryOrder)
Atomically assigns to value.
U64
type U64: u64
The atomic box for u64 type.
Swap
fn Swap(mut self, new: u64, order: memoryOrder): (old: u64)
Atomically stores new value and returns the previous value.
CompareAndSwap
fn CompareAndSwap(mut self, old: u64, new: u64, order: memoryOrder): (swapped: bool)
Executes the compare-and-swap operation.
Add
fn Add(mut self, delta: u64, order: memoryOrder): (new: u64)
Atomically adds delta to value and returns the new value.
Load
fn Load(self, order: memoryOrder): u64
Atomically reads and returns value.
Store
fn Store(mut self, val: u64, order: memoryOrder)
Atomically assigns to value.
Uint
type Uint: uint
The atomic box for uint type.
Swap
fn Swap(mut self, new: uint, order: memoryOrder): (old: uint)
Atomically stores new value and returns the previous value.
CompareAndSwap
fn CompareAndSwap(mut self, old: uint, new: uint, order: memoryOrder): (swapped: bool)
Executes the compare-and-swap operation.
Add
fn Add(mut self, delta: uint, order: memoryOrder): (new: uint)
Atomically adds delta to value and returns the new value.
Load
fn Load(self, order: memoryOrder): uint
Atomically reads and returns value.
Store
fn Store(mut self, val: uint, order: memoryOrder)
Atomically assigns to value.
Uintptr
type Uintptr: uintptr
The atomic box for uintptr type.
Swap
fn Swap(mut self, new: uintptr, order: memoryOrder): (old: uintptr)
Atomically stores new value and returns the previous value.
CompareAndSwap
fn CompareAndSwap(mut self, old: uintptr, new: uintptr, order: memoryOrder): (swapped: bool)
Executes the compare-and-swap operation.
Add
fn Add(mut self, delta: uintptr, order: memoryOrder): (new: uintptr)
Atomically adds delta to value and returns the new value.
Load
fn Load(self, order: memoryOrder): uintptr
Atomically reads and returns value.
Store
fn Store(mut self, val: uintptr, order: memoryOrder)
Atomically assigns to value.