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; }
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; }
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; }
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(); }
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; }
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; }
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; }