我正在使用任务并行库在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。在这方面的任何帮助将不胜感激。