Example #1
0
JModule* GetRegisterModule(JCHAR* pThrdName, JCHAR* pModName)
{
    JThread* pThread = JNULL;
    JModuleThread* pModuleThread = JNULL;
    JModule* pModule = JNULL;

    JThreadManager* pThreadManager = JSingleton<JThreadManager>::instance();

    JLogAutoPtr clsLogAutoPtr(JSingleton<JLog>::instance(), 
        JLOG_MOD_THREAD, "GetRegisterModule");

    if (!pThrdName || !pModName)
    {
        return JNULL;
    }

    pThread = pThreadManager->GetThread(pThrdName);
    if (pThread && pThread->GetType() == JTHRD_TYPE_MOD)
    {
        pModuleThread = dynamic_cast<JModuleThread*>(pThread);
        if (pModuleThread)
        {
            pModule = pModuleThread->GetModule(pModName);
        }
    }

    return pModule;
}
Example #2
0
DWORD WINAPI JThread::TheThread(void *param)
#endif // _WIN32_WCE
{
	JThread *jthread;
	void *ret;

	jthread = (JThread *)param;

	jthread->continuemutex2.Lock();
	jthread->runningmutex.Lock();
	jthread->running = true;
	jthread->runningmutex.Unlock();

	jthread->continuemutex.Lock();
	jthread->continuemutex.Unlock();

	ret = jthread->Thread();

	jthread->runningmutex.Lock();
	jthread->running = false;
	jthread->retval = ret;
	CloseHandle(jthread->threadhandle);
	jthread->runningmutex.Unlock();
	return 0;
}
Example #3
0
unsigned long __stdcall JThread::ExecuteHandler(PVOID param)
{
	JThread* pThread = (JThread*)param;
	if( pThread ){
		pThread->Execute();
	}
	if( !pThread->m_bEnd ){
		pThread->m_bEnd = true;
	}
	return 0;
}
Example #4
0
void JThreadGroup::KillAll()
{
	JMutexAutoLock autolock(m_ThreadGroupLock);
	std::set<JThread *>::iterator it = m_setThread.begin();
	for (;it!=m_setThread.end();it++)
	{
		JThread *pThread = *it;
		pThread->Kill();
		delete pThread;
	}

	m_setThread.clear();
}
Example #5
0
JEventBody* JThreadManager::MakeEventBody(JCHAR* pThrdName, JCHAR* pModName, JEVT_TYPE eType)
{
    JThread* pThread = JNULL;
	JEventBody* pEventBody = JNULL;

    JLogAutoPtr clsLogAutoPtr(JSingleton<JLog>::instance(), 
        JLOG_MOD_THREAD, "JThreadManager::MakeEventBody");

    pThread = GetThread(pThrdName);
    if (pThread)
    {
        pEventBody = pThread->MakeEventBody(eType, pModName);
    }

	return pEventBody;
}
Example #6
0
JUINT32 JThreadManager::EnQueueEvent(JCHAR* pThrdName, JCHAR* pModName, JListItem<JEvent>* pItem)
{
    JUINT32 uiRet = JFAILURE;
    JThread* pThread = JNULL;

    JLogAutoPtr clsLogAutoPtr(JSingleton<JLog>::instance(), 
        JLOG_MOD_THREAD, "JThreadManager::EnQueueEvent");

    if (!pThrdName && !pModName && !pItem)
    {
        JSingleton<JLog>::instance2() << set(JLOG_MOD_THREAD, JLOG_ERROR_LEVEL) 
            << "JThreadManager::EnQueueEvent input param is NULL\n";
        return JFAILURE;
    }

    pThread = GetThread(pThrdName);
    if (pThread)
    {
        uiRet = pThread->EnQueueEvent(pItem, pModName);
    }

    return uiRet;
}
Example #7
0
void *JThread::TheThread(void *param)
{
	JThread *jthread;
	void *ret;
	
	jthread = (JThread *)param;
	
	jthread->continuemutex2.Lock();
	jthread->runningmutex.Lock();
	jthread->running = true;
	jthread->runningmutex.Unlock();
	
	jthread->continuemutex.Lock();
	jthread->continuemutex.Unlock();
	
	ret = jthread->Thread();

	jthread->runningmutex.Lock();
	jthread->running = false;
	jthread->retval = ret;
	jthread->runningmutex.Unlock();

	return NULL;
}