public void EnqueueForFinalization(PTThreadTask task) { lock (m_lock) { m_tasksToFinish.Enqueue(task); Monitor.Pulse(m_lock); } }
public void Enqueue(PTTimePair endTime, PTThreadTask task) { lock (m_lock) { m_queue.Enqueue(endTime, task); Monitor.Pulse(m_lock); } }
private void StartTasks() { foreach (var task in m_tasks) { if (!task.ShouldExecute()) { continue; } var threadTask = PTThreadTask.Borrow(task.EndTime, task); m_controller.Enqueue(threadTask.RunInitializer()); } }
public static void Release(PTThreadTask task) { task.Release(); }
private static void OnRelease(PTThreadTask task) { PTTask.OnRelease(task); task.argument = null; }
/// <summary> /// Can be called from any thread, TaskGroup has the lock /// </summary> /// <param name="finalizer"></param> internal void EnqueueForFinalization(PTThreadTask finalizer) { Tasks[finalizer.EndTime].EnqueueForFinalization(finalizer); }
/// <summary> /// Only ever called from main thread by TaskGroup.StartTasks() /// </summary> /// <param name="task"></param> internal void Enqueue(PTThreadTask task) { m_threadPool.Enqueue(task); m_counters[task.EndTime]++; }
internal void Enqueue(PTTimePair endTime, PTThreadTask task) { m_tasks[endTime].Enqueue(task); m_count++; }
public void Enqueue(PTThreadTask task) { Enqueue(task.EndTime, task); }