DoxigAlpha

tryLock

Function parameters

Parameters

#
rwl:*DefaultRwLock

Single-threaded applications use this for deadlock checks in

Types

#
SingleThreadedRwLock
Single-threaded applications use this for deadlock checks in

Attempts to obtain exclusive lock ownership.

Functions

#
tryLock
Attempts to obtain exclusive lock ownership.
lock
Blocks until exclusive lock ownership is acquired.
unlock
Releases a held exclusive lock.
tryLockShared
Attempts to obtain shared lock ownership.
lockShared
Obtains shared lock ownership.
unlockShared
Releases a held shared lock.

Source

Implementation

#
pub fn tryLock(rwl: *DefaultRwLock) bool {
    if (rwl.mutex.tryLock()) {
        const state = @atomicLoad(usize, &rwl.state, .seq_cst);
        if (state & READER_MASK == 0) {
            _ = @atomicRmw(usize, &rwl.state, .Or, IS_WRITING, .seq_cst);
            return true;
        }

        rwl.mutex.unlock();
    }

    return false;
}