\r
// erase dead thread\r
if (!m_detachedThreadIds.empty()) {\r
- for (DetachedThreadIds::iterator i = m_detachedThreadIds.begin();\r
+ for (ThreadIds::iterator i = m_detachedThreadIds.begin();\r
i != m_detachedThreadIds.end(); i ++) {\r
FocusOfThreads::iterator j = m_focusOfThreads.find((*i));\r
if (j != m_focusOfThreads.end()) {\r
\r
CHECK_TRUE( CloseHandle(m_readEvent) );\r
m_readEvent = NULL;\r
+\r
+ for (ThreadIds::iterator i = m_attachedThreadIds.begin();\r
+ i != m_attachedThreadIds.end(); i++) {\r
+ PostThreadMessage(*i, WM_NULL, 0, 0);\r
+ }\r
}\r
\r
\r
\r
// remove newly created thread's id from m_detachedThreadIds\r
if (!m_detachedThreadIds.empty()) {\r
- DetachedThreadIds::iterator i;\r
+ ThreadIds::iterator i;\r
bool retry;\r
do {\r
retry = false;\r
}\r
\r
\r
+// thread attach notify\r
+bool Engine::threadAttachNotify(DWORD i_threadId) {\r
+ Acquire a(&m_cs);\r
+ m_attachedThreadIds.push_back(i_threadId);\r
+ return true;\r
+}\r
+\r
+\r
// thread detach notify\r
bool Engine::threadDetachNotify(DWORD i_threadId) {\r
Acquire a(&m_cs);\r
m_detachedThreadIds.push_back(i_threadId);\r
+ m_attachedThreadIds.erase(remove(m_attachedThreadIds.begin(), m_attachedThreadIds.end(), i_threadId),\r
+ m_attachedThreadIds.end());\r
return true;\r
}\r
\r