当前位置: 首页>>代码示例>>C++>>正文


C++ Thread::Unlock方法代码示例

本文整理汇总了C++中Thread::Unlock方法的典型用法代码示例。如果您正苦于以下问题:C++ Thread::Unlock方法的具体用法?C++ Thread::Unlock怎么用?C++ Thread::Unlock使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Thread的用法示例。


在下文中一共展示了Thread::Unlock方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: RunInThread

		void Thread::RunInThread( void * aArg )
		{
			Thread* pThread = (Thread*) aArg;

			pThread->Lock();
			pThread->m_bRunning = true;
			pThread->Unlock();

			pThread->Run();

			pThread->Lock();
			pThread->m_bRunning = false;
			pThread->Unlock();
		}
开发者ID:ace13,项目名称:bootil,代码行数:14,代码来源:Thread.cpp

示例2: create_timer

int32
_user_create_timer(clockid_t clockID, thread_id threadID, uint32 flags,
	const struct sigevent* userEvent,
	const thread_creation_attributes* userThreadAttributes)
{
	// copy the sigevent structure from userland
	struct sigevent event;
	if (userEvent != NULL) {
		if (!IS_USER_ADDRESS(userEvent)
			|| user_memcpy(&event, userEvent, sizeof(event)) != B_OK) {
			return B_BAD_ADDRESS;
		}
	} else {
		// none given -- use defaults
		event.sigev_notify = SIGEV_SIGNAL;
		event.sigev_signo = SIGALRM;
	}

	// copy thread creation attributes from userland, if specified
	char nameBuffer[B_OS_NAME_LENGTH];
	ThreadCreationAttributes threadAttributes;
	if (event.sigev_notify == SIGEV_THREAD) {
		status_t error = threadAttributes.InitFromUserAttributes(
			userThreadAttributes, nameBuffer);
		if (error != B_OK)
			return error;
	}

	// get team and thread
	Team* team = thread_get_current_thread()->team;
	Thread* thread = NULL;
	if (threadID >= 0) {
		thread = Thread::GetAndLock(threadID);
		if (thread == NULL)
			return B_BAD_THREAD_ID;

		thread->Unlock();
	}
	BReference<Thread> threadReference(thread, true);

	// create the timer
	return create_timer(clockID, -1, team, thread, flags, event,
		userThreadAttributes != NULL ? &threadAttributes : NULL,
		userEvent == NULL);
}
开发者ID:naveedasmat,项目名称:haiku,代码行数:45,代码来源:UserTimer.cpp

示例3: EnterBlockingOperation

bool Thread::EnterBlockingOperation(void)
{
    Trace trace(__PRETTY_FUNCTION__);
    trace.EnterFunc();

    ThreadRegistry *reg = SingletonObject<ThreadRegistry>::Instance();
    // When a thread could block, it must release the lock.
    //
    Thread *thread = ThreadRegistry::RunningThread();
    if(thread == NULL)
        trace.ErrorQuit(0, 1, "null running thread");

    if(!thread->BlockingAllowed())
        return false;
    if(reg->LockedThread == thread)
        thread->Unlock();
    thread->blocked_ = true;
    return true;
}
开发者ID:aclisp,项目名称:large-scale,代码行数:19,代码来源:Thread.cpp


注:本文中的Thread::Unlock方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。