/
githubmirror
/
omim
Обзор
Документация
Войти
/
githubmirror
/
omim
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
android-95
base/deferred_task.hpp
40 строк
678 B
Anatoly Serdtcev
[generator:geo_objects] Parallel processing in addressless filter
14 июн 2019, 14:07
14 июн 2019, 14:07
d715ad8
Код
Авторство
О чём код?
#pragma once #include "base/thread.hpp" #include <chrono> #include <condition_variable> #include <functional> #include <mutex> namespace base { class DeferredTask { public: using Duration = std::chrono::duration<double>; DeferredTask(Duration const & duration); ~DeferredTask(); void Drop(); template <typename Fn> void RestartWith(Fn const && fn) { { std::unique_lock<std::mutex> l(m_mutex); m_fn = fn; } m_cv.notify_one(); } private: ::threads::SimpleThread m_thread; std::mutex m_mutex; std::condition_variable m_cv; std::function<void()> m_fn; Duration m_duration; bool m_terminate = false; }; } // namespace base