pub fun load(ptr: *i64) i64;
具有顺序一致性的原子 64 位加载
ptr:要加载的地址 ret:加载的值
pub fun store(ptr: *i64, v: i64);
具有顺序一致性的原子 64 位存储
ptr:要存储的地址 v:要存储的值
pub fun cas(ptr: *i64, expected: *i64, desired: i64) bool;
原子比较并交换(compare-and-swap) 如果 *ptr == *expected,则存储 desired 并返回 true。 否则,将实际值写入 *expected 并返回 false。
ptr:原子变量的地址 expected:指向期望值的指针(失败时会被更新) desired:成功时要存储的值 ret:如果交换成功则为 true
pub fun fetch_add(ptr: *i64, v: i64) i64;
原子获取并相加。返回旧值
ptr:原子变量的地址 v:要相加的值 ret:先前的值
pub fun fetch_sub(ptr: *i64, v: i64) i64;
原子获取并相减。返回旧值
ptr:原子变量的地址 v:要相减的值 ret:先前的值
pub fun exchange(ptr: *i64, v: i64) i64;
原子交换。返回旧值
ptr:原子变量的地址 v:新值 ret:先前的值
pub fun fence();
全内存屏障(full memory barrier)
pub fun spin_hint();
用于自旋循环的 CPU 让步提示(yield hint)