コード例 #1
0
        public void ScheduleLongTask(TaskSet task, uint setSize, uint minRange, IntPtr arguments)
        {
            if (setSize == 0 || minRange == 0)
            {
                throw new ArgumentOutOfRangeException();
            }

            Native.enkiAddTaskSetToPipeMinRange(nativeScheduler, task, arguments, setSize, minRange);
        }
コード例 #2
0
        public TaskSet CreateTask(TaskExecuteRange taskFunction)
        {
            TaskSet task = Native.enkiCreateTaskSet(nativeScheduler, taskFunction);

            if (!task.IsCreated)
            {
                throw new InvalidOperationException("TaskSet creation failed");
            }

            return(task);
        }
コード例 #3
0
 internal static extern void enkiWaitForTaskSet(IntPtr scheduler, TaskSet task);
コード例 #4
0
 internal static extern int enkiIsTaskSetComplete(IntPtr scheduler, TaskSet task);
コード例 #5
0
 internal static extern void enkiAddTaskSetToPipeMinRange(IntPtr scheduler, TaskSet task, IntPtr arguments, uint setSize, uint minRange);
コード例 #6
0
 public void WaitForTask(TaskSet task)
 {
     Native.enkiWaitForTaskSet(nativeScheduler, task);
 }
コード例 #7
0
 public bool CheckTaskCompletion(TaskSet task)
 {
     return(Native.enkiIsTaskSetComplete(nativeScheduler, task) == 1);
 }
コード例 #8
0
 public void ScheduleLongTask(TaskSet task, uint setSize = 1, uint minRange = 1)
 {
     ScheduleLongTask(task, setSize, minRange, IntPtr.Zero);
 }
コード例 #9
0
 public void ScheduleTask(TaskSet task, uint setSize = 1)
 {
     ScheduleTask(task, setSize, IntPtr.Zero);
 }
コード例 #10
0
        public void DeleteTask(ref TaskSet task)
        {
            Native.enkiDeleteTaskSet(task.pointer);

            task.pointer = IntPtr.Zero;
        }