00001 #ifndef TileMPIThread_h
00002 #define TileMPIThread_h
00003
00004 #include "TileRequestHandlerThread.h"
00005
00006 #include <cc++/thread.h>
00007 using namespace ost;
00008
00009 namespace BIE{
00010
00016 class TileMPIThread : public Thread{
00017 public:
00019 TileMPIThread( TileRequestHandlerThread *t)
00020 {
00021 tileRequestHandlerThread = t;
00022 stopRequested = false;
00023 pauseRequested = false;
00024 };
00025
00026 virtual ~TileMPIThread(){};
00027
00029 virtual void run ();
00030
00032 TileRequestHandlerThread* getTileRequestHandlerThread()
00033 {
00034 return tileRequestHandlerThread;
00035 }
00036
00038 void reInitialize(TileRequestHandlerThread* t);
00039
00041 void pause();
00042
00044 void unPause();
00045
00046
00048 virtual void stopPausedThread()
00049 {
00050 stopRequested = true;
00051 unPause();
00052 cout << "TileMPIThread.stop: Entered";
00053 }
00054
00055
00057 void final();
00058
00059 private:
00060 TileRequestHandlerThread *tileRequestHandlerThread;
00061 volatile bool stopRequested;
00062 volatile bool pauseRequested;
00063
00064 Semaphore paused;
00065 Semaphore resume;
00066
00067 };
00068
00069 }
00070
00071
00072
00073
00074
00075
00076 #endif // TileMPIThread_h