Exemplo n.º 1
0
		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();
		}
Exemplo n.º 2
0
void Thread::ExitBlockingOperation(void)
{
    Trace trace(__PRETTY_FUNCTION__);
    trace.EnterFunc();

    // When a previously locked thread resumes running after using a 
    // blocking operation, it becomes locked again.
    //
    Thread *thread = ThreadRegistry::RunningThread();
    if(thread == NULL)
        trace.ErrorQuit(0, 1, "null running thread");

    thread->blocked_ = false;
    if(thread->mutexCount_ > 0)
        thread->Lock();
}