pub def Mutex: i64
pub fun make() Mutex;
创建一个新的未加锁互斥锁
ret:一个未加锁的互斥锁
pub fun lock(m: *Mutex);
获取互斥锁,阻塞直到其可用
使用带指数退避的 test-and-test-and-set:首先在没有总线锁的情况下读取状态,仅当锁看起来空闲时才尝试 CAS。在发生竞争时,使用带有 pause 提示的自旋进行指数级增加的迭代次数然后再重试,并设置上限以限制最坏情况下的延迟。
m:指向互斥锁的指针
pub fun unlock(m: *Mutex);
释放互斥锁
m:指向互斥锁的指针
pub fun try_lock(m: *Mutex) bool;
尝试获取互斥锁而不阻塞
m:指向互斥锁的指针 ret:如果成功获取锁则为 true,如果已被持有则为 false
pub fun is_locked(m: *Mutex) bool;
检查互斥锁当前是否被持有
在并发上下文中,该结果会立即过时;仅用于诊断或断言,切勿用于同步决策。
m:指向互斥锁的指针 ret:如果互斥锁已加锁则为 true