1 #pragma once 2 3 #include <MTTools.h> 4 #include <MTPlatform.h> 5 #include <MTConcurrentQueueLIFO.h> 6 #include <MTStackArray.h> 7 #include <MTFixedArray.h> 8 9 10 namespace MT 11 { 12 class FiberContext; 13 typedef void (*TTaskEntryPoint)(FiberContext & context, void* userData); 14 15 namespace internal 16 { 17 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 18 // Task description 19 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 20 struct TaskDesc 21 { 22 //Task entry point 23 TTaskEntryPoint taskFunc; 24 25 //Task user data (task context) 26 void* userData; 27 28 TaskDesc() 29 : taskFunc(nullptr) 30 , userData(nullptr) 31 { 32 } 33 34 TaskDesc(TTaskEntryPoint _taskFunc, void* _userData) 35 : taskFunc(_taskFunc) 36 , userData(_userData) 37 { 38 } 39 40 bool IsValid() 41 { 42 return (taskFunc != nullptr); 43 } 44 }; 45 } 46 47 } 48