20 Bool useConditionVariable);
33 void doStep(
Int scheduleIdx);
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;
Tasks to be defined by every component.
std::shared_ptr< Task > Ptr
Scheduler(CPS::Logger::Level logLevel=CPS::Logger::Level::off)
std::unordered_map< CPS::Task::Ptr, std::deque< CPS::Task::Ptr > > Edges
virtual void stop()
Called on simulation stop to reliably clean up e.g. running helper threads.
void step(Real time, Int timeStepCount)
Performs a single simulation step.
virtual ~ThreadScheduler()
ThreadScheduler(Int threads, String outMeasurementFile, Bool useConditionVariable)
void scheduleTask(int thread, CPS::Task::Ptr task)
void finishSchedule(const Edges &inEdges)