swoole原始碼解析之swoole_lock的unlock操作
阿新 • • 發佈:2018-12-13
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);
}