.NET线程。如何限制处理器时间使用

时间:2011-07-08 06:22:53

标签: .net multithreading time limits

是否有任何方法可以减少.NET环境中非主线程的处理器时间使用。该线程用于始终从Web服务器获取信息,并且它消耗所有单核处理器时间。我知道我可以使用Thread.Sleep()但它似乎不是一个很好的解决方案。

2 个答案:

答案 0 :(得分:2)

弄乱优先事项等,是行不通的。如果你的系统中有1个线程说“我有工作要做,让我工作”,没有其他竞争线程,windows会继续安排它。

您表明此线程正在从Web服务器获取信息。据推测,它在等待服务器响应时至少阻塞,因此希望当时不使用CPU。不幸的是,它确实听起来像是在轮询信息,所以Thread.Sleep在这里可能是最好的 - 除非有一些其他的带外信号可以告诉线程何时应该下次轮询。


如果Web服务器“知道”线程何时应该进行下一次轮询,则可能希望修改它以在其响应中包含此类信息。然后,您可以从回复中提取该信息,并至少将Sleep个期间设置为适当的值。

或者,如果另一个线程将从其他地方获取指示应该发出新请求的信息,那么您应该使用事件(例如AutoResetEvent)和{{3}而不是Thread.Sleep。在该信号上,再次指定合适的睡眠周期。这样,只要他们认为应该再次进行轮询,其他东西就可以唤醒这个睡​​眠线程。

答案 1 :(得分:0)

您可以修改后台线程的优先级