26 #ifndef STATICLIB_PION_SCHEDULER_HPP
27 #define STATICLIB_PION_SCHEDULER_HPP
31 #include <condition_variable>
40 #include "staticlib/config.hpp"
57 std::condition_variable no_more_active_users;
62 std::condition_variable scheduler_has_stopped;
72 uint32_t active_users;
82 std::vector<std::unique_ptr<std::thread>> thread_pool;
87 asio::io_service asio_service;
92 asio::steady_timer timer;
97 std::function<void() > thread_stop_hook;
105 num_threads(number_of_threads),
110 thread_stop_hook([]() STATICLIB_NOEXCEPT {}) { }
179 void post(std::function<
void()> work_func) {
189 void keep_running(asio::io_service& my_service, asio::steady_timer& my_timer);
205 std::lock_guard<std::mutex> scheduler_lock{mutex};
206 this->thread_stop_hook = hook;
221 #endif // STATICLIB_PION_SCHEDULER_HPP