17class ThreadScheduler : 
public Scheduler {
 
   19  ThreadScheduler(Int threads, String outMeasurementFile,
 
   20                  Bool useConditionVariable);
 
   21  virtual ~ThreadScheduler();
 
   23  void step(Real time, Int timeStepCount);
 
   27  void finishSchedule(
const Edges &inEdges);
 
   28  void scheduleTask(
int thread, CPS::Task::Ptr task);
 
   33  void doStep(Int scheduleIdx);
 
   34  static void threadFunction(ThreadScheduler *sched, Int idx);
 
   36  String mOutMeasurementFile;
 
   39  std::vector<std::thread> mThreads;
 
   41  std::vector<CPS::Task::List> mTempSchedules;
 
   42  struct ScheduleEntry {
 
   45    std::vector<Counter *> reqCounters;
 
   47  std::vector<ScheduleEntry *> mSchedules;
 
   49  Bool mJoining = 
false;
 
   51  Int mTimeStepCount = 0;