Blame view

3rdparty/spdlog-1.9.2/include/spdlog/details/periodic_worker.h 1.11 KB
3d2ab595   Hu Chunming   支持gb28181
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
  // Copyright(c) 2015-present, Gabi Melman & spdlog contributors.
  // 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 SPDLOG_API periodic_worker
  {
  public:
      periodic_worker(const std::function<void()> &callback_fun, std::chrono::seconds interval);
      periodic_worker(const periodic_worker &) = delete;
      periodic_worker &operator=(const periodic_worker &) = delete;
      // stop the worker thread and join it
      ~periodic_worker();
  
  private:
      bool active_;
      std::thread worker_thread_;
      std::mutex mutex_;
      std::condition_variable cv_;
  };
  } // namespace details
  } // namespace spdlog
  
  #ifdef SPDLOG_HEADER_ONLY
  #    include "periodic_worker-inl.h"
  #endif