From 34ab0451bdd1e7496d607acb6ee209586ee7e86e Mon Sep 17 00:00:00 2001 From: tomsmeding Date: Wed, 29 Aug 2018 22:51:58 +0200 Subject: Rename job.{cpp,h} to scheduler --- job.cpp | 62 -------------------------------------------------------------- 1 file changed, 62 deletions(-) delete mode 100644 job.cpp (limited to 'job.cpp') diff --git a/job.cpp b/job.cpp deleted file mode 100644 index 90fede2..0000000 --- a/job.cpp +++ /dev/null @@ -1,62 +0,0 @@ -#include -#include -#include -#include "job.h" - -void Scheduler::workerEntry() { - while (true) { - Job *job = nullptr; - - { - lock_guard commMutGuard(commMut); - if (jobs.size() > 0) { - job = jobs.front(); - jobs.pop(); - } - } - - if (job) { - job->callback(); - } else if (finishFlag) { - break; - } else { - this_thread::sleep_for(chrono::milliseconds(100)); - } - } -} - -Scheduler::Scheduler(int nthreads) - : nthreads(nthreads) { - - assert(nthreads > 0); - - workers.reserve(nthreads); - for (int i = 0; i < nthreads; i++) { - workers.emplace_back([this]() { workerEntry(); }); - } -} - -Scheduler::~Scheduler() { - finish(); -} - -void Scheduler::submit(const function &func) { - Job *job = new Job(func); - lock_guard commMutGuard(commMut); - jobs.push(job); -} - -void Scheduler::finish() { - if (hasJoined) return; - - { - lock_guard commMutGuard(commMut); - finishFlag = true; - } - - for (int i = 0; i < nthreads; i++) { - workers[i].join(); - } - - hasJoined = true; -} -- cgit v1.2.3-70-g09d2