Skip to content

sync.stdatomic #

fn add_i64 #

fn add_i64(ptr &i64, delta int) i64

add_i64 adds provided delta as an atomic operation

fn add_u64 #

fn add_u64(ptr &u64, delta int) u64

add_u64 adds provided delta as an atomic operation

fn load_i64 #

fn load_i64(ptr &i64) i64

atomicall get a value

fn load_u64 #

fn load_u64(ptr &u64) u64

atomicall get a value

fn new_atomic #

fn new_atomic[T](val T) &AtomicVal[T]

new_atomic creates a new atomic value of T type

fn store_i64 #

fn store_i64(ptr &i64, val i64)

atomicall set a value

fn store_u64 #

fn store_u64(ptr &u64, val u64)

atomic store/load operations have to be used when there might be another concurrent access atomicall set a value

fn sub_i64 #

fn sub_i64(ptr &i64, delta int) i64

add_i64 subtracts provided delta as an atomic operation

fn sub_u64 #

fn sub_u64(ptr &u64, delta int) u64

sub_u64 subtracts provided delta as an atomic operation

fn (AtomicVal[T]) load #

fn (mut a AtomicVal[T]) load() T

load returns current value of the atomic value

fn (AtomicVal[T]) store #

fn (mut a AtomicVal[T]) store(val T)

store updates the atomic value with val

fn (AtomicVal[T]) add #

fn (mut a AtomicVal[T]) add(delta T) T

add adds the atomic value with delta

fn (AtomicVal[T]) sub #

fn (mut a AtomicVal[T]) sub(delta T) T

sub subs the atomic value with delta

struct AtomicVal #

@[heap]
struct AtomicVal[T] {
	val T
}