summaryrefslogtreecommitdiff
path: root/competition/job.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'competition/job.cpp')
-rw-r--r--competition/job.cpp51
1 files changed, 0 insertions, 51 deletions
diff --git a/competition/job.cpp b/competition/job.cpp
deleted file mode 100644
index 043074e..0000000
--- a/competition/job.cpp
+++ /dev/null
@@ -1,51 +0,0 @@
-#include <chrono>
-#include <cassert>
-#include "job.h"
-
-void Scheduler::workerEntry() {
- while (true) {
- Job *job = nullptr;
-
- {
- lock_guard commMutGuard(commMut);
- if (terminateFlag) break;
- if (jobs.size() > 0) {
- job = jobs.front();
- jobs.pop();
- }
- }
-
- if (job) {
- job->callback();
- } 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<void()> &func) {
- Job *job = new Job(func);
- lock_guard commMutGuard(commMut);
- jobs.push(job);
-}
-
-void Scheduler::finish() {
- for (int i = 0; i < nthreads; i++) {
- workers[i].join();
- }
-}