医院招聘网站建设和维护人员路由优化大师
swoole_lock提供的trylock_read用于非阻塞的读,其原型如下:
$lock->trylock_read();
调用会立即返回,必须检测返回值以确定是否拿到了锁。
下面我们分析下其流程。
static PHP_METHOD(swoole_lock, trylock_read)
{swLock *lock = swoole_get_object(getThis());if (lock->trylock_rd == NULL){swoole_php_error(E_WARNING, "lock[type=%d] can't use trylock_read", lock->type);RETURN_FALSE;}SW_LOCK_CHECK_RETURN(lock->trylock_rd(lock));
}
1、文件锁
static int swFileLock_trylock_rd(swLock *lock)
{lock->object.filelock.lock_t.l_type = F_RDLCK;return fcntl(lock->object.filelock.fd, F_SETLK, &lock->object.filelock);
}