diff options
Diffstat (limited to 'scheduler.cpp')
-rw-r--r-- | scheduler.cpp | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/scheduler.cpp b/scheduler.cpp index 6ed66ac..740eb3a 100644 --- a/scheduler.cpp +++ b/scheduler.cpp @@ -2,9 +2,8 @@ #include <chrono> #include <cassert> #include "scheduler.h" -#include "params.h" -void Scheduler::workerEntry() { +void Scheduler::workerEntry(bool verbose) { while (true) { Job *job = nullptr; @@ -17,20 +16,21 @@ void Scheduler::workerEntry() { } if (job) { - if (scheduler_verbose) { + if (verbose) { cout << "SCHED(" << this_thread::get_id() << ") running job" << endl; } job->callback(); - if (scheduler_verbose) { + delete job; + if (verbose) { cout << "SCHED(" << this_thread::get_id() << ") finished job" << endl; } } else if (finishFlag) { - if (scheduler_verbose) { + if (verbose) { cout << "SCHED(" << this_thread::get_id() << ") spotted finishFlag" << endl; } break; } else { - if (scheduler_verbose) { + if (verbose) { cout << "SCHED(" << this_thread::get_id() << ") no job, waiting" << endl; } this_thread::sleep_for(chrono::milliseconds(100)); @@ -38,17 +38,17 @@ void Scheduler::workerEntry() { } } -Scheduler::Scheduler(int nthreads) - : nthreads(nthreads) { +Scheduler::Scheduler(bool verbose, int nthreads) + : verbose(verbose), nthreads(nthreads) { assert(nthreads > 0); workers.reserve(nthreads); for (int i = 0; i < nthreads; i++) { - workers.emplace_back([this]() { workerEntry(); }); + workers.emplace_back([this]() { workerEntry(this->verbose); }); } - if (scheduler_verbose) { + if (verbose) { cout << "SCHED " << nthreads << " workers spawned" << endl; } } @@ -66,7 +66,7 @@ void Scheduler::submit(const function<void()> &func) { void Scheduler::finish() { if (hasJoined) return; - if (scheduler_verbose) { + if (verbose) { cout << "SCHED finish()" << endl; } @@ -76,13 +76,13 @@ void Scheduler::finish() { } for (int i = 0; i < nthreads; i++) { - if (scheduler_verbose) { + if (verbose) { cout << "SCHED Joining worker " << i << "..." << endl; } workers[i].join(); } - if (scheduler_verbose) { + if (verbose) { cout << "SCHED All workers joined" << endl; } |