1 #ifndef RHESUS_MANAGED_TASK_H_
2 #define RHESUS_MANAGED_TASK_H_
20 static void Finalize();
22 ManagedTask(std::string name, FUNCPTR funptr);
23 ManagedTask(std::string name, FUNCPTR funptr, INT32 priority, UINT32 stackSize);
26 bool Start(UINT32 arg0 = 0, UINT32 arg1 = 0, UINT32 arg2 = 0, UINT32 arg3 = 0, UINT32 arg4 = 0,
27 UINT32 arg5 = 0, UINT32 arg6 = 0, UINT32 arg7 = 0, UINT32 arg8 = 0);
32 static const int kInvalidTask;
33 static const int kMaxManagedTasks;
34 static bool s_isQueueInitialized;
35 static std::queue<int> s_availableIDs;
36 static Mutex s_idSync;
37 static ManagedTask** s_managedTasks;
39 static INT32 releaseTask(ManagedTask* instance);
40 static INT32 registerTask(ManagedTask* instance);
42 void intern_ctor(std::string name, FUNCPTR funptr, INT32 priority, UINT32 stackSize);
44 static INT32 intern_func_wrapper(UINT32 arg0, UINT32 arg1, UINT32 arg2, UINT32 arg3, UINT32 arg4,
45 UINT32 arg5, UINT32 arg6, UINT32 arg7, UINT32 arg8, UINT32 arg9)
47 ManagedTask* inst =
reinterpret_cast<ManagedTask*
>(arg0);
49 INT32 ret = inst->m_func(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
54 void setIdentifier(
int id);
60 ManagedTask(ManagedTask& copy)
64 m_identifier = copy.m_identifier;
65 copy.m_identifier = kInvalidTask;
68 ManagedTask& operator=(
const ManagedTask& a)
70 ManagedTask& cpy =
const_cast<ManagedTask&
>(a);
75 m_identifier = cpy.m_identifier;
76 cpy.m_identifier = kInvalidTask;