From c475ccc380c7a17d088ae6fa17060d39c59ec5d1 Mon Sep 17 00:00:00 2001 From: "Kartik K. Agaram" Date: Thu, 23 Apr 2015 20:42:17 -0700 Subject: 1153 - start of scheduler implementation This first step is just stopping run() after a fixed number of instructions. But the scheduler layer isn't done yet. --- cpp/038scheduler | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 cpp/038scheduler (limited to 'cpp/038scheduler') diff --git a/cpp/038scheduler b/cpp/038scheduler new file mode 100644 index 00000000..3196795c --- /dev/null +++ b/cpp/038scheduler @@ -0,0 +1,19 @@ +//: Run multiple routines concurrently, without any guarantees on how the +//: operations in each are interleaved with each other. + +:(before "End Globals") +size_t Scheduling_interval = 500; + +//: first, add a deadline to run() +//: todo: these changes are ugly and brittle +:(replace{} "void run(recipe_number r)") +void run(recipe_number r) { + run(routine(r), Scheduling_interval); +} +:(replace "void run(routine rr)") +void run(routine rr, size_t time_slice) +:(replace "while (!done(rr))" following "void run(routine rr, size_t time_slice)") +size_t ninstrs = 0; +while (!done(rr) && ninstrs < time_slice) +:(after "Running One Instruction") +ninstrs++; -- cgit 1.4.1-2-gfad0