mutex

std.sync.mutex

def Mutex

pub def Mutex: i64

fun make

pub fun make() Mutex;

创建一个新的未加锁互斥锁

ret:一个未加锁的互斥锁

fun lock

pub fun lock(m: *Mutex);

获取互斥锁,阻塞直到其可用

使用带指数退避的 test-and-test-and-set:首先在没有总线锁的情况下读取状态,仅当锁看起来空闲时才尝试 CAS。在发生竞争时,使用带有 pause 提示的自旋进行指数级增加的迭代次数然后再重试,并设置上限以限制最坏情况下的延迟。

m:指向互斥锁的指针

fun unlock

pub fun unlock(m: *Mutex);

释放互斥锁

m:指向互斥锁的指针

fun try_lock

pub fun try_lock(m: *Mutex) bool;

尝试获取互斥锁而不阻塞

m:指向互斥锁的指针 ret:如果成功获取锁则为 true,如果已被持有则为 false

fun is_locked

pub fun is_locked(m: *Mutex) bool;

检查互斥锁当前是否被持有

在并发上下文中,该结果会立即过时;仅用于诊断或断言,切勿用于同步决策。

m:指向互斥锁的指针 ret:如果互斥锁已加锁则为 true