summaryrefslogtreecommitdiff
path: root/matching/include/spdlog/details/periodic_worker.h
diff options
context:
space:
mode:
Diffstat (limited to 'matching/include/spdlog/details/periodic_worker.h')
-rw-r--r--matching/include/spdlog/details/periodic_worker.h71
1 files changed, 0 insertions, 71 deletions
diff --git a/matching/include/spdlog/details/periodic_worker.h b/matching/include/spdlog/details/periodic_worker.h
deleted file mode 100644
index fa6488d..0000000
--- a/matching/include/spdlog/details/periodic_worker.h
+++ /dev/null
@@ -1,71 +0,0 @@
-
-//
-// Copyright(c) 2018 Gabi Melman.
-// Distributed under the MIT License (http://opensource.org/licenses/MIT)
-//
-
-#pragma once
-
-// periodic worker thread - periodically executes the given callback function.
-//
-// RAII over the owned thread:
-// creates the thread on construction.
-// stops and joins the thread on destruction (if the thread is executing a callback, wait for it to finish first).
-
-#include <chrono>
-#include <condition_variable>
-#include <functional>
-#include <mutex>
-#include <thread>
-namespace spdlog {
-namespace details {
-
-class periodic_worker
-{
-public:
- periodic_worker(const std::function<void()> &callback_fun, std::chrono::seconds interval)
- {
- active_ = (interval > std::chrono::seconds::zero());
- if (!active_)
- {
- return;
- }
-
- worker_thread_ = std::thread([this, callback_fun, interval]() {
- for (;;)
- {
- std::unique_lock<std::mutex> lock(this->mutex_);
- if (this->cv_.wait_for(lock, interval, [this] { return !this->active_; }))
- {
- return; // active_ == false, so exit this thread
- }
- callback_fun();
- }
- });
- }
-
- periodic_worker(const periodic_worker &) = delete;
- periodic_worker &operator=(const periodic_worker &) = delete;
-
- // stop the worker thread and join it
- ~periodic_worker()
- {
- if (worker_thread_.joinable())
- {
- {
- std::lock_guard<std::mutex> lock(mutex_);
- active_ = false;
- }
- cv_.notify_one();
- worker_thread_.join();
- }
- }
-
-private:
- bool active_;
- std::thread worker_thread_;
- std::mutex mutex_;
- std::condition_variable cv_;
-};
-} // namespace details
-} // namespace spdlog