本文整理汇总了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();
}
示例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);
}
示例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;
}