123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- #include "CcosThread.h"
- #include "ProcThreadManager.h"
- ProcThreadManager g_PTManager;
- ProcThreadManager::ProcThreadManager()
- {
- }
- ProcThreadManager::~ProcThreadManager()
- {
- m_ThreadMap.clear();
- }
- bool ProcThreadManager::RegistThread(PVOID p)
- {
- if (p == NULL)
- {
- return false;
- }
- DWORD Tid = GetCurrentThreadId();
- if (Tid != ((Ccos_Thread*)p)->GetTID())
- {
- return false;
- }
- Thread_Lock();
- m_ThreadMap[Tid] = p;
- Thread_UnLock();
- return true;
- }
- void ProcThreadManager::UnRegistThread(DWORD Tid)
- {
- Thread_Lock();
- if (m_ThreadMap.size() > 0)
- {
- map<DWORD, PVOID>::iterator iter = m_ThreadMap.find(Tid);
- if (iter != m_ThreadMap.end())
- {
- m_ThreadMap[Tid] = NULL;
- }
- }
- Thread_UnLock();
- }
- PVOID ProcThreadManager::FindThread(DWORD Tid)
- {
- //must be same Tid
- if (GetCurrentThreadId() != Tid)
- {
- return NULL;
- }
- PVOID pThread = NULL;
- Thread_Lock();
- if (m_ThreadMap.size() > 0)
- {
- map<DWORD, PVOID>::iterator iter = m_ThreadMap.find(Tid);
- if (iter != m_ThreadMap.end())
- {
- pThread = iter->second;
- }
- }
- Thread_UnLock();
- return pThread;
- }
- PVOID ProcThreadManager::GetThreadLogger(DWORD Tid)
- {
- //must be same Tid
- if (GetCurrentThreadId() != Tid)
- {
- return NULL;
- }
- PVOID pT = FindThread(Tid);
- if (pT)
- {
- return ((Ccos_Thread*)pT)->GetLogger();
- }
- return NULL;
- }
|