00001 00002 #ifndef TileMasterWorkerThread_h 00003 #define TileMasterWorkerThread_h 00004 00005 #include <BIEmpi.h> 00006 #include <cc++/thread.h> 00007 using namespace ost; 00008 00009 //namespace BIE{ 00010 // // 00011 //} 00012 00013 //#include "MPITemperedSimulation.h" 00014 00015 00016 namespace BIE{ 00017 00018 class LikelihoodComputationMPITP; 00019 class EvaluationRequest; 00020 00026 class TileMasterWorkerThread : public Thread { 00027 00028 public: 00029 00030 TileMasterWorkerThread(); 00031 TileMasterWorkerThread(LikelihoodComputationMPITP* simulation); 00032 virtual ~TileMasterWorkerThread(); 00033 void reInitialize(LikelihoodComputationMPITP* simulation); 00034 void Send(EvaluationRequest *request); 00035 00037 void stop(); 00038 00040 virtual void run (); 00041 00043 void resetPause(); 00044 00046 void unPause(); 00047 00049 virtual void final(); 00050 00051 private: 00052 LikelihoodComputationMPITP *simulation; 00053 EvaluationRequest *request; 00054 Semaphore workAvailable; 00055 bool stopRequested; 00056 bool resetPauseRequested; 00057 Semaphore paused; 00058 Semaphore resume; 00059 }; 00060 00061 } // end namespace 00062 00063 #endif