线程计数在Parallel.Foreach中动态控制

时间:2014-09-12 14:32:21

标签: c# multithreading parallel-processing

我正在使用任务并行库在C#中进行线程化。

目前,我正在使用ParallelOptions类开始“X”个线程,如下所示:

ParallelOptions opt = new ParallelOptions();
opt.MaxDegreeOfParallelism = 4;
Parallel.ForEach(temp, opt, (t) =>
{
 //body
});

//temp is List of strings

这可以很好地为列表temp内的每个字符串启动4个线程。

我的项目要求说明启动的线程数应该是可控的。即例如,假设我们有100个字符串,并且我已经启动了具有4个线程的并行循环,如上所述。如果我们想改变线程数是可能的吗?

假设有4个线程处理了50条记录。现在我只想为下一个50运行2个线程而不退出循环。 (这只是一个例子,记录数量不固定)。

绑定此更改的唯一方法是在运行时更改线程数。

我尝试使用锁更改MaxDegreeOfParallelism内部循环,但所有这些都不影响线程计数,它始终保持为4。在这方面的任何帮助将不胜感激。

0 个答案:

没有答案