我的托管服务提供商给了我50%的cpu限制。我正在尝试使用DotNetZip备份我的DNN门户文件 - 超过16000个600Mb磁盘空间文件的集合。我正在使用压缩优先级最低的单独线程。如果处理器已经足够加载,那么我的线程工作正常,但是当处理器或多或少可用时,我很快就会增加CPU限制(50%),最后池终止并需要回收。
所以我需要知道如何减慢线程速度以免超出cpu限制。
感谢。
答案 0 :(得分:1)
如果您只想将线程保持在50%以下,请在整个代码中撒上Thread.Sleep(x)。你需要弄清楚你需要多少这些,以及毫秒延迟应该是什么 - 只有当你编写了需要Sleep()调用的代码时... ...
那就是说,你的情况听起来很奇怪。应该有更好的方法来进行备份。
答案 1 :(得分:0)
最简单的方法可能是定期抛出一个Sleep
,并指定足够的时间,以便线程不能,即使没有其他任何东西可以运行,它也只使用一个核心的一半。
答案 2 :(得分:0)
workerThread.Suspend ()
Thread.Sleep (500);
workerThread.Resume ();
但请注意。注意,如果工作线程在暂停时处于关键部分,则可能导致死锁或意外减速。欲获得更多信息: MSDN System.Threading.Thread.Suspend