#pragma once #include #include #include namespace Nuake { class Job { public: Job(std::function job, std::function end); Job(const Job&) = delete; Job& operator=(const Job&) = delete; ~Job() { m_Thread.join(); } bool IsDone() { return m_IsDone; } void End(); private: std::thread m_Thread; std::atomic m_IsDone; std::function m_Job; std::function m_End; }; }