Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
bool thread_mutex::try_lock(void)
{
	return acl_pthread_mutex_trylock(mutex_) == 0;
}