我正在开发一个 C# 程序,并且我有一个消耗太多 CPU 的函数。我想知道一种通过代码(而不是任何外部应用程序)来控制它并限制 CPU 使用百分比的方法。例如,如果它使用 90% 的 CPU 使用率,要让我的应用程序只消耗 20%,即使它变得更慢。它必须在应用程序内自动完成。如果你提供一个类,那就太棒了。
netadictos
问问题
6040 次
3 回答
16
我不知道您是否可以这样做,但是您可以通过Priority属性更改执行线程的线程优先级。您可以通过以下方式设置:
Thread.CurrentThread.Priority = ThreadPriority.Lowest;
另外,我不认为你真的想限制它。如果机器处于空闲状态,您希望它忙于任务,对吗?ThreadPriority 有助于将此信息传达给调度程序。
于 2008-10-30T18:20:15.937 回答
0
您可以通过在循环中调用 Thread.Sleep(milliseconds) 来减慢循环。这会将 CPU 交还给调度程序。
但是“消耗过多的 CPU”让我认为你可能有更根本的问题。该线程是否正在轮询并等待其他内容?如果是这样,您应该考虑使用事件或其他一些基于内核的信号机制。
于 2008-10-30T18:22:17.383 回答
0
我想您需要查询某种操作系统 API 以了解您消耗了多少 CPU 并从中做出限制决定(如 Thread.Sleep)。
于 2008-10-31T01:00:38.327 回答