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 (
// 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.
Relaxed = memoryOrder(runtime::atomicRelaxed)
// 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.
Acquire = memoryOrder(runtime::atomicAcquire)
// 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.
Release = memoryOrder(runtime::atomicRelease)
// Acquire and Release combined.
// Aka acquire/release.
// For loads it uses Acquire, for stores it uses Release ordering.
AcqRel = memoryOrder(runtime::atomicAcqRel)
// Default memory order for most things.
// Aka sequentially consistent.
// Operations are sequenced consistently.
SeqCst = memoryOrder(runtime::atomicSeqCst)
)
Atomic memory orders.
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.