52 public static void For(
int fromInclusive,
int toExclusive,
ParallelForAction callback,
object context =
null)
54 int num = toExclusive - fromInclusive;
64 int num3 = num / num2;
65 int num4 = num % num2;
67 int num5 = toExclusive;
68 for (
int num6 = num2 - 1; num6 >= 0; num6--)
77 int toExclusive2 = num8 + num7;
78 RangeTask rangeTask =
new RangeTask(callback, num8, toExclusive2, context, countdownEvent);
88 if (countdownEvent.
Wait(10000))
93 throw new Exception($
"Fatal Deadlock in FastParallelFor. pending: {ThreadPool.PendingWorkItemCount}. avail: {workerThreads}");
readonly int _toExclusive
RangeTask(ParallelForAction action, int fromInclusive, int toExclusive, object context, CountdownEvent countdown)
readonly int _fromInclusive
readonly ParallelForAction _action
readonly CountdownEvent _countdown
static void For(int fromInclusive, int toExclusive, ParallelForAction callback, object context=null)
static bool ForceTasksOnCallingThread
static void InvokeTask(object context)
static int ProcessorCount
static byte Min(byte val1, byte val2)
static byte Max(byte val1, byte val2)
static bool QueueUserWorkItem(WaitCallback callBack)
static void GetAvailableThreads(out int workerThreads, out int completionPortThreads)
delegate void ParallelForAction(int fromInclusive, int toExclusive, object context)