コード例 #1
0
ファイル: locker.cpp プロジェクト: 1514louluo/acl
bool locker::try_lock()
{
#ifdef	ACL_HAS_SPINLOCK
	if (spinlock_)
	{
		if (pthread_spin_trylock(spinlock_) != 0)
			return false;
	}
	else
#endif
	if (mutex_)
	{
		if (acl_pthread_mutex_trylock(mutex_) != 0)
			return false;
	}

	if (fHandle_ == ACL_FILE_INVALID)
		return true;

	int operation = ACL_FLOCK_OP_EXCLUSIVE | ACL_FLOCK_OP_NOWAIT;
	if (acl_myflock(fHandle_, ACL_FLOCK_STYLE_FCNTL, operation) == 0)
		return true;

	if (mutex_)
		acl_assert(acl_pthread_mutex_unlock(mutex_) == 0);
	return false;
}
コード例 #2
0
ファイル: thread_mutex.cpp プロジェクト: iYefeng/acl
bool thread_mutex::try_lock(void)
{
	return acl_pthread_mutex_trylock(mutex_) == 0;
}