summaryrefslogtreecommitdiff
path: root/scheduler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'scheduler.cpp')
-rw-r--r--scheduler.cpp26
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;
}