/* * ThreadMaster.h * */ #ifndef GC_THREADMASTER_H_ #define GC_THREADMASTER_H_ #include "Thread.h" #include "Program.h" namespace GC { class ThreadMasterBase { public: Names N; string progname; virtual ~ThreadMasterBase() {} virtual void run() { throw runtime_error("cannot run base class"); } void run(string& progname) { this->progname = progname; run(); } }; template class ThreadMaster : public ThreadMasterBase { static ThreadMaster* singleton; public: vector*> threads; Player* P; Machine machine; Memory memory; static ThreadMaster& s(); ThreadMaster(); virtual ~ThreadMaster() {} void run_tape(int thread_number, int tape_number, int arg); void join_tape(int thread_number); virtual Thread* new_thread(int i); void run(); }; } /* namespace GC */ #endif /* GC_THREADMASTER_H_ */