Home | nevrax.com |
|
task_manager.hGo to the documentation of this file.00001 00007 /* Copyright, 2000 Nevrax Ltd. 00008 * 00009 * This file is part of NEVRAX NEL. 00010 * NEVRAX NEL is free software; you can redistribute it and/or modify 00011 * it under the terms of the GNU General Public License as published by 00012 * the Free Software Foundation; either version 2, or (at your option) 00013 * any later version. 00014 00015 * NEVRAX NEL is distributed in the hope that it will be useful, but 00016 * WITHOUT ANY WARRANTY; without even the implied warranty of 00017 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00018 * General Public License for more details. 00019 00020 * You should have received a copy of the GNU General Public License 00021 * along with NEVRAX NEL; see the file COPYING. If not, write to the 00022 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, 00023 * MA 02111-1307, USA. 00024 */ 00025 00026 #ifndef NL_TASK_MANAGER_H 00027 #define NL_TASK_MANAGER_H 00028 00029 #include "nel/misc/types_nl.h" 00030 00031 #include <list> 00032 00033 #include "nel/misc/mutex.h" 00034 #include "nel/misc/thread.h" 00035 00036 namespace NLMISC { 00037 00038 00045 class CTaskManager : public IRunnable 00046 { 00047 public: 00048 00050 CTaskManager(); 00051 00053 ~CTaskManager(); 00054 00056 void run(void); 00057 00059 void addTask(IRunnable *); 00060 00062 bool deleteTask(IRunnable *r); 00063 00065 void sleepTask(void) { nlSleep(10); } 00066 00068 uint taskListSize(void); 00069 00071 bool isThreadRunning() {return _ThreadRunning;} 00072 00073 00074 protected: 00075 00086 void waitCurrentTaskToComplete (); 00087 00088 protected: 00089 00091 CSynchronized<std::list<IRunnable *> > _TaskQueue; 00092 00094 IThread *_Thread; 00095 00097 volatile bool _ThreadRunning; 00098 00099 private: 00100 00101 volatile bool _IsTaskRunning; 00102 00103 }; 00104 00105 00106 } // NLMISC 00107 00108 00109 #endif // NL_TASK_MANAGER_H 00110 00111 /* End of task_manager.h */ |