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