in Core/src/Impl/ParallelUtil.cs [18:37]
public static List<TResult> ParallelFor<TSource, TResult>(
this IEnumerable<TSource> sources,
int degreeOfParallelism,
Func<TSource, TResult> func)
{
var results = sources.TryGetNonEnumeratedCount(out var expectedCount) ? new List<TResult>(expectedCount) : new List<TResult>();
var lockObj = new Lock();
Parallel.ForEach(sources, new ParallelOptions() { MaxDegreeOfParallelism = degreeOfParallelism }, (x, _) =>
{
var result = func(x);
lock (lockObj)
results.Add(result);
});
if (results.Capacity > results.Count + 1024)
results.TrimExcess();
return results;
}