krita
kis_thread_pool.h00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef KIS_THREAD_POOL_
00020 #define KIS_THREAD_POOL_
00021
00022 #include <qthread.h>
00023 #include <qptrlist.h>
00024 #include <qmutex.h>
00025
00026 #include "kis_thread.h"
00027
00036 class KisThreadPool : public KisThread {
00037
00038 public:
00039
00040 virtual ~KisThreadPool();
00041
00042 static KisThreadPool * instance();
00043
00044 void enqueue(KisThread * thread);
00045 void dequeue(KisThread * thread);
00046
00047 void run();
00048
00049
00050 KisThreadPool();
00051
00052 private:
00053
00054 KisThreadPool(const KisThreadPool&);
00055 KisThreadPool operator=(const KisThreadPool&);
00056
00057 QMutex m_poolMutex;
00058 int m_numberOfRunningThreads;
00059 int m_numberOfQueuedThreads;
00060 int m_maxThreads;
00061 int m_wait;
00062 QPtrList<KisThread> m_threads;
00063 QPtrList<KisThread> m_runningThreads;
00064 QPtrList<KisThread> m_oldThreads;
00065
00066 static KisThreadPool * m_singleton;
00067 };
00068
00069
00070 #endif
|