您的位置:程序门 -> c/c++ -> c++ 语言



如何控制一个进程cpu的占用率?


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


如何控制一个进程cpu的占用率?[已结贴,结贴人:wangrun2000]
发表于:2007-08-21 18:50:43 楼主
比如说一个科学计算的程序,里面做的主要就是不停的循环计算,如果不做什么特殊处理,那么程序运行时候的cpu占用率一般都是100%,有没有什么办法可以控制他的占用率,最好是能够控制到某一个特定的百分比,杀毒软件mcafee查毒的时候就是可以控制cpu的占用率到一个特定的值,不一定很准确,大概在一个范围就行了。

我的问题可以说和这个问题,是一模一样的:
http://community.csdn.net/expert/topic/5271/5271846.xml?temp=.9427759
发表于:2007-08-21 18:51:511楼 得分:3
设置优先级?
发表于:2007-08-21 19:14:102楼 得分:0
具体在vc++里怎么做??我试一下
发表于:2007-08-21 19:28:013楼 得分:2
优先级
发表于:2007-08-21 20:30:204楼 得分:2
去查线程/进程的优先级,并跟踪这个进程的cpu时间使用情况,太高了就降优先级,还太高就再降,就这么办
发表于:2007-08-22 18:22:135楼 得分:0
经过测试观察,mcafee的cpu占用率功能,确实是用优先级实现的!!
于是在我的对话框程序里写了
bool   cmydlg::oninitdialog()
{
        setpriorityclass(getcurrentprocess(),idle_priority_class);
        setthreadpriority(getcurrentthread(),thread_priority_lowest);
        ........
        return   true;  
}
这样虽然在   “windows任务管理器”   里看到我的程序的   “基本优先级”   是“低”,但cpu使用率并没有降低,不知道我的程序错在哪里??
发表于:2007-08-22 22:15:346楼 得分:2
所谓优先级是在与别人竞争时体现的,   如果你的程序在死循环,   其他程序都处于空闲等待状态时,   你的程序优先级在低也会占满cpu的.
发表于:2007-08-22 22:17:137楼 得分:2
让你的线程不占用cpu有一个办法,   sleep一段时间,   ^_^
发表于:2007-08-24 11:25:108楼 得分:2
我也都是sleep...
发表于:2007-08-24 11:47:499楼 得分:2
只要让cpu不一直忙着处理你的程序,随便你怎么调用
降低优先级
等待
。。
发表于:2007-08-24 16:38:1710楼 得分:2
采用两个线程,一个在跑循环,一个获取cpu使用率,当cpu占用达到指定值时,给跑循环的进程发送消息,让它暂时sleep下来.
发表于:2007-08-24 17:40:5611楼 得分:3
所谓优先级是在与别人竞争时体现的,   如果你的程序在死循环,   其他程序都处于空闲等待状态时,   你的程序优先级在低也会占满cpu的.
*********************************************************
这个说得很好,就像你得屏保一样,它的优先级是idle_priority_class,你什么事情都不做的时候,它还不是照样抢占了cpu.
楼上说得方法也可行,不过看了之后总觉得有些问题,又说不出来.
发表于:2007-08-27 12:53:1112楼 得分:0
谢谢大家,欢迎继续跟贴。


快速检索

最新资讯
热门点击