【发布时间】:2012-09-12 19:19:52
【问题描述】:
我已经实现了元启发式求解器并使用了 .NET 4.0 Parallel.For 和 Parallel.Foreach。
它在我的中端机器上运行良好。但是搜索太激烈了,消耗太多资源,尤其是低端机器上的CPU时间。
所以我认为我必须在需要时设置一个选项来调低搜索强度。我想在不涉及算法的情况下降低 CPU 利用率。只要搜索完成较慢,只要它不会锁定机器并允许其他工作搁置,就可以了。
我正在考虑将 Thread.Sleep 放在方法上,因为所有线程都 100% 受 CPU 限制(无 I/O)。这会降低我需要的 CPU 使用强度吗?有没有更好的解决方案?
【问题讨论】:
-
它是否跨越了两个多核/使用了太多线程?您可以指定一些限制:stackoverflow.com/questions/2002864/…
-
你为什么关心它消耗过多的CPU?通常,无论如何都不会使用 CPU 时间,并且操作系统在调度方面足够智能,因此您的应用程序不应干扰系统中的其他进程。
-
@svick 我希望它作为后台应用程序运行。目前它正在尝试冻结整个机器:(
-
为什么不直接使用
MaxDegreeOfParallelism来生成有限数量的线程并让一些内核空闲?
标签: c# multithreading parallel.foreach