#ifndef __TRACYTASKDISPATCH_HPP__ #define __TRACYTASKDISPATCH_HPP__ #include #include #include #include #include #include namespace tracy { class TaskDispatch { public: TaskDispatch( size_t workers ); ~TaskDispatch(); void Queue( const std::function& f ); void Queue( std::function&& f ); void Sync(); private: void Worker(); std::vector> m_queue; std::mutex m_queueLock; std::condition_variable m_cvWork, m_cvJobs; std::atomic m_exit; size_t m_jobs; std::vector m_workers; }; } #endif