【发布时间】:2010-09-13 22:52:40
【问题描述】:
我正在运行一个多线程循环:
protected ParallelOptions parallelOptions = new ParallelOptions();
parallelOptions.MaxDegreeOfParallelism = 2;
Parallel.ForEach(items, parallelOptions, item =>
{
// Loop code here
});
我想在并行循环执行期间更改parallelOptions.MaxDegreeOfParallelism 以减少或增加线程数。
parallelOptions.MaxDegreeOfParallelism = 5;
似乎没有增加线程数。有人有什么想法吗?
【问题讨论】:
-
您能解释一下为什么要这样做吗?如果需要,它会自行将线程数增加到指定的最大值,或者在适当的情况下使用更少的线程数。
-
主要是为了在共享服务器上使用过多资源时限制应用程序。我让服务器以 100% 运行,这降低了服务器上其他应用程序的响应能力。
-
这是受 CPU 限制的问题还是磁盘等其他“资源”问题?
-
这种情况尤其是 CPU,但是线程的数量可能会影响内存和磁盘以及取决于 foreach 的内容。如果系统资源负担过重,我希望能够更改使用的总线程数。
标签: c# multithreading parallel-processing task-parallel-library