swoole_lock提供的unlock操作用于释放锁,其调用原型如下。
$lock->unlock();
下面我们分析下其调用流程。
static PHP_METHOD(swoole_lock, unlock)
{
swLock *lock = swoole_get_object(getThis());//获取内部封装对象
SW_LOCK_CHECK_RETURN(lock->unlock(lock));//调用unlock操作
}
互斥量解锁流程:
static int swMutex_unlock(swLock *lock)
{
return pthread_mutex_unlock(&lock->object.mutex._lock);//调用linxu的函数解锁
}
文件锁解锁流程:
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);//通过调用fcntl执行解锁操作
}