如何使自己的程序在运行的时候,使其占用的CPU时间低于一个固定的值,比如说20%,即使是系统空闲时,此进程也不会占用超过20%CPU资源.

解决方案 »

  1.   

    占用cpu时间是根据你的程序来的,如果你的程序在不停的计算大量的数据,很可能cpu会达到100%,降低cpu占有率可以用以下方法:
    1. 优化你的程序:主要是指流程,次要是指算法。通过简化流程来降低程序运算量,通过优化算法来提高单位时间内的计算量。
    2. sleep():若程序非得不停的大量计算,可以考虑在循环内添加Sleep(10),虽然只有10毫秒(自己可以调整),但系统得到了调度,所以cpu占有率会好很多
      

  2.   

    不可能把,线程的调度由系统负责,不管你怎么SLEEP(),只要空闲,他就会被调用
    试试用事件对象来控制,不过太烦了
      

  3.   

    查询CPU占用时间,就向性能监视器一样,只要进程高于门限,就释放对CPU的占用,你用的代码越底层,这个值就越接近◎
      

  4.   

    感觉楼主的动机不纯,呵呵,像是想让这个程序不让人家注意到似的。在我看来,这种控制的实现可能不大。假如你的程序一直有运算的话,也就是比较密集的需要CPU时间片,系统会自主的分配给你时间片,在这时你想要取代系统命令CPU给你一定的处理时间的话,好像不大现实。因为系统都不能让某一个程序获得一定数目的时间。调低线程优先级是个方法,但是达不到楼主的定量要求,实际上系统也无能为力。即使你调低优先级达到一个比较理想的结果,但是一旦有其他程序加入调度的话,系统就会重新评估每个线程的优先级,也许他会觉得你的线程低得可怜,给你调高一点给你个惊喜:)。总之,定量的控制CPU时间感觉不大可能实现。
      

  5.   

    如果把程序比作跑步,cpu占有率就好比速度,你跑得越快(即单位时间内的运动距离越大),速度(cpu占有率)当然越大,难道你要跑的很快,但速度却下降吗?
    Sleep有没有用,你试试就知道
      

  6.   

    线程里如果有sleep的话,cpu占用不会很大
      

  7.   

    各位兄弟,非常感谢大家加入讨论中. 在我提出的问题中,我的意思只是想控制我的程序的CPU占用率,至于程序的运行效率可以放在第二位,比如说有一个统计程序,它的运算量非常大,可能要运行一天或几天,这样要是你不控制它,不管你现在是否有其它的程序在运行,你的系统的CPU占用率都会非常的高,系统的反应速度会很慢,如果只是降低优先级的话, 如果系统任务繁重的话,统计进程可能根本分不到CPU时间, 所以我的意思是既不想让我的进程占用的CPU资源超过限定值, 也不想让它饿死.