ThreadPool.hxx
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef __ThreadPool__
00023 #define __ThreadPool__
00024
00025 #include "PooledThread.hxx"
00026 #include "Mutex.hxx"
00027 #include <deque>
00028
00029 namespace CLAM {
00030
00031 class PooledThread;
00032
00051 class ThreadPool
00052 {
00053 public:
00064 ThreadPool(int initialNumberOfThreads = 10, bool isRealtime = false);
00065
00066 ~ThreadPool();
00067
00076 PooledThread* GetThreadFromPool();
00077
00078 void ReturnThreadToPool(PooledThread* aThread);
00079
00080 void EmptyPool();
00081
00082 private:
00083 bool mIsRealtime;
00084 CLAM::Mutex dequeMutex;
00085 std::deque<PooledThread*> idleThreads;
00086 std::deque<PooledThread*> busyThreads;
00087 };
00088
00089 }
00090
00091 #endif