我有一份任务清单。每个任务消耗不同的内存量。 我可以非常粗略地预测特定任务的内存消耗,所以我不能依赖这样的预测。
例如:
因此,如果我只提交它们,我有几乎100%的机会OutOfMemmoryException。 如果我只使用2个或1个线程,我会失去性能。
我将在执行期间检查可运行任务中的可用空闲内存,如果没有足够的内存则终止它,并在稍后以较少的线程执行它们。但是当所有四个任务同时检测到低内存级别并终止它们时,可能存在竞争条件。所以我需要一种能够逐个逐出任务的主管。
无论如何这个解决方案看起来并不优雅,那么这种情况是否有最佳实践,或许某种方式可以控制任务提交率或其他任何方式?