1. 程式人生 > >swoole原始碼解析之swoole_lock的unlock操作

swoole原始碼解析之swoole_lock的unlock操作

swoole_lock提供的unlock操作用於釋放鎖,其呼叫原型如下。

$lock->unlock();

下面我們分析下其呼叫流程。

static PHP_METHOD(swoole_lock, unlock)
{
    swLock *lock = swoole_get_object(getThis());
    SW_LOCK_CHECK_RETURN(lock->unlock(lock));
}

互斥量解鎖流程:

static int swMutex_unlock(swLock *lock)
{
    return pthread_mutex_unlock(&lock->object.mutex._lock);
}

檔案鎖解鎖流程:

static int swFileLock_unlock(swLock *lock)
{
    lock->object.filelock.lock_t.l_type = F_UNLCK;
    return fcntl(lock->object.filelock.fd, F_SETLKW, &lock->object.filelock);
}