私はC#Parallel.ForEachを使用して、1,000を超えるデータのサブセットを処理しています。セットのサイズにもよりますが、1セットの処理には5〜30分かかります。オプション付きの私のコンピューターで
ParallelOptions po = new ParallelOptions();
po.MaxDegreeOfParallelism = Environment.ProcessorCount
8つの並列プロセスを取得します。私が理解したように、プロセスは並列タスク間で均等に分割されます(たとえば、最初のタスクはジョブ番号1,9,17などを取得し、2番目のタスクは2,10,18などを取得します)。したがって、1つのタスクが他のタスクよりも早く自分の仕事を終えることができます。これらのデータセットは他のデータセットよりも時間がかからなかったためです。
問題は、4つの並列タスクが24時間以内にジョブを終了するのに対し、最後の1つは48時間以内に終了することです。すべての並列タスクが等しく終了するように並列処理を整理する機会はありますか?これは、すべての並列タスクがすべてのジョブが完了するまで機能し続けることを意味しますか?