00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef _QT_CLEANER_H
00022 #define _QT_CLEANER_H
00023
00024 #include <qthread.h>
00025 #include <qmutex.h>
00026 #include <qptrlist.h>
00027
00028 template<class X>
00029 class QCleaner: public QThread, private QMutex
00030 {
00031 QPtrList<X> theRow;
00032 int theInterval;
00033
00034 void purgeAll()
00035 {
00036 QMutexLocker lock(this);
00037 theRow.clear();
00038 }
00039
00040 void run()
00041 {
00042 while(1)
00043 { usleep(theInterval * 1000000);
00044 purgeAll();
00045 }
00046 }
00047
00048 public:
00049 void deleteObject(X *theObject)
00050 {
00051 QMutexLocker lock(this);
00052 theRow.append(theObject);
00053 }
00054
00055 QCleaner(int interval = 300): QThread()
00056 {
00057 theInterval = interval;
00058 theRow.setAutoDelete(true);
00059 start();
00060 }
00061
00062 ~QCleaner()
00063 {
00064 terminate();
00065 wait();
00066 purgeAll();
00067 }
00068 };
00069
00070 #endif