241 for (
int j = 1;
j <
array.Length;
j++)
448 private static ParallelLoopResult ForWorker<TLocal>(
int fromInclusive,
int toExclusive,
ParallelOptions parallelOptions,
Action<int> body,
Action<int, ParallelLoopState> bodyWithState,
Func<int, ParallelLoopState, TLocal, TLocal> bodyWithLocal,
Func<TLocal> localInit,
Action<TLocal> localFinally)
453 result._completed =
true;
527 parallelLoopState.CurrentIteration =
j;
535 parallelLoopState.CurrentIteration =
k;
599 private static ParallelLoopResult ForWorker64<TLocal>(
long fromInclusive,
long toExclusive,
ParallelOptions parallelOptions,
Action<long> body,
Action<long, ParallelLoopState> bodyWithState,
Func<long, ParallelLoopState, TLocal, TLocal> bodyWithLocal,
Func<TLocal> localInit,
Action<TLocal> localFinally)
604 result._completed =
true;
678 parallelLoopState.CurrentIteration =
num3;
686 parallelLoopState.CurrentIteration =
num4;
932 private static ParallelLoopResult ForEachWorker<TSource, TLocal>(
IEnumerable<TSource> source,
ParallelOptions parallelOptions,
Action<TSource> body,
Action<TSource, ParallelLoopState> bodyWithState,
Action<TSource, ParallelLoopState, long> bodyWithStateAndIndex,
Func<TSource, ParallelLoopState, TLocal, TLocal> bodyWithStateAndLocal,
Func<TSource, ParallelLoopState, long, TLocal, TLocal> bodyWithEverything,
Func<TLocal> localInit,
Action<TLocal> localFinally)
946 private static ParallelLoopResult ForEachWorker<TSource, TLocal>(TSource[]
array,
ParallelOptions parallelOptions,
Action<TSource> body,
Action<TSource, ParallelLoopState> bodyWithState,
Action<TSource, ParallelLoopState, long> bodyWithStateAndIndex,
Func<TSource, ParallelLoopState, TLocal, TLocal> bodyWithStateAndLocal,
Func<TSource, ParallelLoopState, long, TLocal, TLocal> bodyWithEverything,
Func<TLocal> localInit,
Action<TLocal> localFinally)
955 },
null,
null,
null,
null);
962 },
null,
null,
null);
969 },
null,
null,
null);
973 return ForWorker(
lowerBound,
toExclusive,
parallelOptions,
null,
null, (
int i,
ParallelLoopState state,
TLocal local) =>
bodyWithStateAndLocal(
array[i],
state,
local),
localInit,
localFinally);
975 return ForWorker(
lowerBound,
toExclusive,
parallelOptions,
null,
null, (
int i,
ParallelLoopState state,
TLocal local) =>
bodyWithEverything(
array[i],
state, i,
local),
localInit,
localFinally);
978 private static ParallelLoopResult ForEachWorker<TSource, TLocal>(
IList<TSource> list,
ParallelOptions parallelOptions,
Action<TSource> body,
Action<TSource, ParallelLoopState> bodyWithState,
Action<TSource, ParallelLoopState, long> bodyWithStateAndIndex,
Func<TSource, ParallelLoopState, TLocal, TLocal> bodyWithStateAndLocal,
Func<TSource, ParallelLoopState, long, TLocal, TLocal> bodyWithEverything,
Func<TLocal> localInit,
Action<TLocal> localFinally)
985 },
null,
null,
null,
null);
992 },
null,
null,
null);
999 },
null,
null,
null);
1003 return ForWorker(0,
list.Count,
parallelOptions,
null,
null, (
int i,
ParallelLoopState state,
TLocal local) =>
bodyWithStateAndLocal(
list[i],
state,
local),
localInit,
localFinally);
1005 return ForWorker(0,
list.Count,
parallelOptions,
null,
null, (
int i,
ParallelLoopState state,
TLocal local) =>
bodyWithEverything(
list[i],
state, i,
local),
localInit,
localFinally);
1044 if (!
source.KeysNormalized)
1090 if (!
source.KeysNormalized)
1145 if (!
source.KeysNormalized)
1199 if (!
source.KeysNormalized)
1206 private static ParallelLoopResult PartitionerForEachWorker<TSource, TLocal>(
Partitioner<TSource> source,
ParallelOptions parallelOptions,
Action<TSource> simpleBody,
Action<TSource, ParallelLoopState> bodyWithState,
Action<TSource, ParallelLoopState, long> bodyWithStateAndIndex,
Func<TSource, ParallelLoopState, TLocal, TLocal> bodyWithStateAndLocal,
Func<TSource, ParallelLoopState, long, TLocal, TLocal> bodyWithEverything,
Func<TLocal> localInit,
Action<TLocal> localFinally)
1209 if (!
source.SupportsDynamicPartitions)
1255 ParallelEtwProvider.Log.ParallelFork(TaskScheduler.Current.Id, Task.CurrentId.GetValueOrDefault(), forkJoinContextID);
1290 long key = current.Key;
1291 TSource
value = current.Value;
1294 parallelLoopState.CurrentIteration =
key;
1336 parallelLoopState.CurrentIteration = 0
L;
1512 while (!
state.Cancellation.IsCancellationRequested)
1517 if (!
state.Enumerator.MoveNext())
1521 current =
state.Enumerator.Current;
1526 state.QueueWorkerIfDopAvailable();
1533 state.RecordException(e);
1537 if (
state.SignalWorkerCompletedIterating())
1625 while (!
state.Cancellation.IsCancellationRequested)
1633 current =
state.Enumerator.Current;
1639 state.Lock.Release();
1646 state.QueueWorkerIfDopAvailable();
1653 state.RecordException(e);
1658 if (
state.SignalWorkerCompletedIterating())
static OrderablePartitioner< Tuple< long, long > > Create(long fromInclusive, long toExclusive)
Enumerator GetEnumerator()
void Add(TKey key, TValue value)
static int ProcessorCount
static string Parallel_Invoke_ActionNull
static string Parallel_ForEach_NullEnumerator
static string Parallel_ForEach_PartitionerNotDynamic
static string Parallel_ForEach_OrderedPartitionerKeysNotNormalized
static string Parallel_ForEach_PartitionerReturnedNull
static ? ExecutionContext Capture()
static void Run(ExecutionContext executionContext, ContextCallback callback, object? state)
static int Decrement(ref int location)
static int Increment(ref int location)
static readonly ParallelEtwProvider Log
readonly SemaphoreSlim Lock
AsyncForEachAsyncState(IAsyncEnumerable< TSource > source, Func< object, Task > taskBody, int dop, TaskScheduler scheduler, CancellationToken cancellationToken, Func< TSource, CancellationToken, ValueTask > body)
readonly IAsyncEnumerator< TSource > Enumerator
readonly CancellationToken _externalCancellationToken
readonly CancellationTokenSource Cancellation
bool SignalWorkerCompletedIterating()
readonly Func< object, Task > _taskBody
void RecordException(Exception e)
List< Exception > _exceptions
void QueueWorkerIfDopAvailable()
readonly TaskScheduler _scheduler
readonly CancellationTokenRegistration _registration
readonly ExecutionContext _executionContext
ForEachAsyncState(Func< object, Task > taskBody, int dop, TaskScheduler scheduler, CancellationToken cancellationToken, Func< TSource, CancellationToken, ValueTask > body)
readonly Func< TSource, CancellationToken, ValueTask > LoopBody
SyncForEachAsyncState(IEnumerable< TSource > source, Func< object, Task > taskBody, int dop, TaskScheduler scheduler, CancellationToken cancellationToken, Func< TSource, CancellationToken, ValueTask > body)
readonly IEnumerator< TSource > Enumerator
static ParallelLoopResult PartitionerForEachWorker< TSource, TLocal >(Partitioner< TSource > source, ParallelOptions parallelOptions, Action< TSource > simpleBody, Action< TSource, ParallelLoopState > bodyWithState, Action< TSource, ParallelLoopState, long > bodyWithStateAndIndex, Func< TSource, ParallelLoopState, TLocal, TLocal > bodyWithStateAndLocal, Func< TSource, ParallelLoopState, long, TLocal, TLocal > bodyWithEverything, Func< TLocal > localInit, Action< TLocal > localFinally)
static int ComputeTimeoutPoint(int timeoutLength)
static ParallelLoopResult For(int fromInclusive, int toExclusive, ParallelOptions parallelOptions, Action< int > body)
static readonly ParallelOptions s_defaultParallelOptions
static ParallelLoopResult For(int fromInclusive, int toExclusive, Action< int > body)
static int s_forkJoinContextID
static void Invoke(params Action[] actions)
static ParallelLoopResult ForEach< TSource, TLocal >(IEnumerable< TSource > source, Func< TLocal > localInit, Func< TSource, ParallelLoopState, TLocal, TLocal > body, Action< TLocal > localFinally)
static ParallelLoopResult For(int fromInclusive, int toExclusive, ParallelOptions parallelOptions, Action< int, ParallelLoopState > body)
static int DefaultDegreeOfParallelism
static ParallelLoopResult ForEachWorker< TSource, TLocal >(IEnumerable< TSource > source, ParallelOptions parallelOptions, Action< TSource > body, Action< TSource, ParallelLoopState > bodyWithState, Action< TSource, ParallelLoopState, long > bodyWithStateAndIndex, Func< TSource, ParallelLoopState, TLocal, TLocal > bodyWithStateAndLocal, Func< TSource, ParallelLoopState, long, TLocal, TLocal > bodyWithEverything, Func< TLocal > localInit, Action< TLocal > localFinally)
static ParallelLoopResult ForWorker64< TLocal >(long fromInclusive, long toExclusive, ParallelOptions parallelOptions, Action< long > body, Action< long, ParallelLoopState > bodyWithState, Func< long, ParallelLoopState, TLocal, TLocal > bodyWithLocal, Func< TLocal > localInit, Action< TLocal > localFinally)
static ParallelLoopResult ForEach< TSource >(IEnumerable< TSource > source, Action< TSource > body)
static void Invoke(ParallelOptions parallelOptions, params Action[] actions)
static Task ForEachAsync< TSource >(IEnumerable< TSource > source, Func< TSource, CancellationToken, ValueTask > body)
static ParallelLoopResult For(long fromInclusive, long toExclusive, Action< long, ParallelLoopState > body)
static ParallelLoopResult ForWorker< TLocal >(int fromInclusive, int toExclusive, ParallelOptions parallelOptions, Action< int > body, Action< int, ParallelLoopState > bodyWithState, Func< int, ParallelLoopState, TLocal, TLocal > bodyWithLocal, Func< TLocal > localInit, Action< TLocal > localFinally)
static void ThrowSingleCancellationExceptionOrOtherException(ICollection exceptions, CancellationToken cancelToken, Exception otherException)
static bool CheckTimeoutReached(int timeoutOccursAt)
static ParallelLoopResult For(long fromInclusive, long toExclusive, ParallelOptions parallelOptions, Action< long, ParallelLoopState > body)
static ParallelLoopResult For(long fromInclusive, long toExclusive, Action< long > body)
static ParallelLoopResult For< TLocal >(int fromInclusive, int toExclusive, Func< TLocal > localInit, Func< int, ParallelLoopState, TLocal, TLocal > body, Action< TLocal > localFinally)
static ParallelLoopResult For(int fromInclusive, int toExclusive, Action< int, ParallelLoopState > body)
static ParallelLoopResult For(long fromInclusive, long toExclusive, ParallelOptions parallelOptions, Action< long > body)
static OperationCanceledException ReduceToSingleCancellationException(ICollection exceptions, CancellationToken cancelToken)
bool TrySetException(Exception exception)
static TaskScheduler Current
static TaskScheduler Default
static new TaskFactory< TResult > Factory
static Task FromException(Exception exception)
static Task FromCanceled(CancellationToken cancellationToken)
static void WaitAll(params Task[] tasks)
static bool UnsafeQueueUserWorkItem(WaitCallback callBack, object? state)
bool IsCancellationRequested