我将使用C# Parallel.ForEach来处理超过一千个数据子集。每个子集的处理时间取决于其大小,通常需要5-30分钟。在我的电脑上,选择以下选项:
我将获得8个并行进程。据我理解,进程在并行任务之间平均分配(例如,第一个任务获取1,9,17等作业编号,第二个任务获取2,10,18等作业编号)。因此,一个任务可以比其他任务更快地完成自己的工作,因为这些数据集所需的时间比其他数据集少。
问题是四个并行任务在24小时内完成它们的工作,但最后一个任务需要48小时才能完成。是否有机会组织并行性,使所有并行任务都以相同的速度完成?这意味着所有并行任务都会继续工作,直到所有作业都完成?
ParallelOptions po = new ParallelOptions();
po.MaxDegreeOfParallelism = Environment.ProcessorCount
我将获得8个并行进程。据我理解,进程在并行任务之间平均分配(例如,第一个任务获取1,9,17等作业编号,第二个任务获取2,10,18等作业编号)。因此,一个任务可以比其他任务更快地完成自己的工作,因为这些数据集所需的时间比其他数据集少。
问题是四个并行任务在24小时内完成它们的工作,但最后一个任务需要48小时才能完成。是否有机会组织并行性,使所有并行任务都以相同的速度完成?这意味着所有并行任务都会继续工作,直到所有作业都完成?