32 lines
696 B
C++
32 lines
696 B
C++
#ifndef HYDRATASK
|
|
#define HYDRATASK
|
|
|
|
#include "../engine/HydraObject.h"
|
|
|
|
#include <thread>
|
|
|
|
class CLASS_DEFINE HydraTask : public HydraObject
|
|
{
|
|
private:
|
|
int m_child_tasks = 0;
|
|
|
|
HydraID m_dependant_task = INVALID_HYDRA_ID;
|
|
HydraID m_barrierID = INVALID_HYDRA_ID;
|
|
std::thread::id m_notifyID;
|
|
HydraThreadAffinity ThreadAffinity = HydraThreadAffinity::General;
|
|
bool m_notifyThread = true;
|
|
|
|
void _RunTask();
|
|
friend class HydraTaskScheduler;
|
|
protected:
|
|
HydraID m_taskID;
|
|
|
|
public:
|
|
HydraID GetBarrierID() {return m_barrierID;}
|
|
virtual void Process() = 0;
|
|
virtual void Notify() {};
|
|
virtual void Complete() {};
|
|
};
|
|
|
|
#endif /* HYDRATASK */
|