#pragma once #include #include #include namespace metaforce { class CInfiniteLoopDetector { int m_duration = 0; std::mutex m_mutex; std::promise m_stopRequested; std::future m_futureObj; bool stopRequested() const; public: explicit CInfiniteLoopDetector(int duration=1000); void run(); void stop(); static void UpdateWatchDog(std::chrono::system_clock::time_point WatchDog); }; }