+++ /dev/null
-#include "../../include/pthreadwrapper/threadedexecutor.h"\r
-\r
-#ifdef XMEM\r
- #include <xmem.h>\r
-#endif\r
-\r
-namespace PThread\r
-{\r
-\r
-ThreadedExecutor::~ThreadedExecutor()\r
-{\r
- for(std::vector<Thread *>::iterator i=m_threads.begin(); i!=m_threads.end(); i++)\r
- {\r
- (*i)->Cancel();\r
- (*i)->Join();\r
- delete (*i);\r
- }\r
-}\r
-\r
-void ThreadedExecutor::Cancel()\r
-{\r
- for(std::vector<Thread *>::iterator i=m_threads.begin(); i!=m_threads.end(); i++)\r
- {\r
- (*i)->Cancel(); \r
- }\r
-}\r
-\r
-void ThreadedExecutor::CleanupFinished()\r
-{\r
- for(std::vector<Thread *>::iterator i=m_threads.begin(); i!=m_threads.end(); )\r
- {\r
- if((*i)->IsRunning()==false)\r
- {\r
- delete (*i);\r
- i=m_threads.erase(i);\r
- }\r
- else\r
- {\r
- i++;\r
- }\r
- }\r
-}\r
-\r
-void ThreadedExecutor::Execute(Runnable *runnable)\r
-{\r
- CleanupFinished();\r
- m_threads.push_back(new Thread(runnable)); \r
-}\r
-\r
-void ThreadedExecutor::Join()\r
-{\r
- for(std::vector<Thread *>::iterator i=m_threads.begin(); i!=m_threads.end(); i++)\r
- {\r
- (*i)->Join();\r
- }\r
- CleanupFinished();\r
-}\r
-\r
-} // namespace\r