如何利用cpu的空闲时间 to 有福之人:是指在cpu空闲时启动线程吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 qige2001老兄能否详细点说明这个多线程如何工作? 进程的优先级类:优先级类 标识符 描述实时 REALTIME_PRIORITY_CLASS 立即对事件作出响应,执行关键时间的任务。会抢先于操作系统组件之前运行。高 HIGH_PRIORITY_CLASS 立即对事件作出响应,执行关键时间的任务。高于正常 ABOVE_NORMAL_PRIORITY_CLASS 在正常优先级与高优先级之间运行(Windows2000)。正常 NORMAL_PRIORITY_CLASS 没有特殊调度需求低于正常 BELOW_NORMAL_PRIORITY_CLASS 在正常优先级与空闲优先级之间运行(Windows2000)。空闲 IDLE_PRIORITY_CLASS 在系统空闲时运行。设置方法:BOOL SetPriorityClass( HANDLE hProcess, DWORD dwPriority );DWORD GetPriorityClass( HANDLE hProcess );使用命令外壳启动一个程序时,该程序的起始优先级是正常优先级。如果使用Start命令来启动该程序,可以使用一个开关来设定应用程序的起始优先级。例如:c:\>START /LOW CALC.EXEStart命令还能识别/BELOWNORMAL、/NORMAL、/ABOVENORMAL、/HIGH和/REALTIME等开关。线程的相对优先级:相对优先级 标识符 描述关键时间 THREAD_PRIORITY_TIME_CRITICAL 对于实时优先级类线程在优先级31上运行,对于其他优先级类,线程在优先级15上运行。最高 THREAD_PRIORITY_HIGHEST 线程在高于正常优先级上两级上运行。高于正常 THREAD_PRIORITY_ABOVE_NORMAL 线程在正常优先级上一级上运行。正常 THREAD_PRIORITY_NORMAL 线程在进程的优先级类上正常运行。低于正常 THREAD_PRIORITY_BELOW_NORMAL 线程在低于正常优先级下一级上运行。最低 THREAD_PRIORITY_LOWEST 线程在低于正常优先级下两级上运行。空闲 THREAD_PRIORITY_IDLE 对于实时优先级类线程在优先级16上运行对于其他优先级类线程在优先级1上运行。设置方法:BOOL SetThreadPriority( HANDLE hThread, DWORD dwPriority );DWORD GetThreadPriorityClass( HANDLE hThread ); 下面一段代码仅供参考!int CHYGDMApp::Run() { // TODO: Add your specialized code here and/or call the base class //return CWinApp::Run(); HACCEL hAccel; hAccel=LoadAccelerators(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME)); MSG msg; while(1) { if(PeekMessage(&msg,NULL,0,0,PM_NOREMOVE)) { if(GetMessage(&msg,NULL,0,0)==FALSE) { ExitInstance(); return msg.wParam ; } //if(!TranslateAccelerator(hWnd,hAccel,&msg)) { //处理加速键 // TranslateMessage(&msg); // DispatchMessage(&msg); // } } else { WaitMessage(); //可以不用 WaitMessage,而执行自己的操作。 //或者在App的OnIdle()里执行自己的操作。 //这只是利用CPU的空闲时间,对其它应用程序没有影响。 } } return TRUE; } 当cpu有空的时候windows会发一个onidle的消息。在你的app里把它响应一下就可以了。如果你想后台运行的话,我还是劝你开一个优先级小一些的线程,这样你至少还能终止它。 在OnIdle()中执行大量的运算工作,显然是不明智的。因为它将一直占用CPU直到运算工作结束。应该采用低优先级的工作线程的做法。 OnIdle()的优先级已经很低了吧。 OnIdle() 空闲的时候有用优先级低是因为是在空闲的时候比较有用以前有一个类似的软件好像是美国什么地方发的,利用家用电脑计算分析什么信号,再通过上网的时候发回给什么什么航天局,好像是叫在家里寻找外星人的计划,以后就没有消息了。呵呵 这个计划叫seti@home,我还一直在参与呢!大家有兴趣的话可以到网上去看看 setiathome.berkeley.edu 最好不要在OnIdle()中运行大的运算,否则,你的系统鼠标都不会响应 程序中要定义类和对象,并且要使用类和对象!!! 因为程序的目的就是为了展现面向对象的特点和优点!!!假定: 对一家公司的员工进行管理:包括人员名字,出生日期,加入公司的年份,那个部门(用ring0---ring9表示10个部门) ,工资标准等(多多不限)要求有对(假如有员工改名, 可以实现改名, 尽管使用中不常见, 但主要是为了实现面向对象思想)(更改工资标准)(开除员工和增加员工)(通过工龄即加入公司的时间来对员工进行排序, 同一年的可随便排)(通过部门的对员工排序, 个部门的集中在一起显示,譬如ring0的排了下了跟着就是全是ring1部门的)请兄弟们快点回帖, 把源代码和程序发给我, 搞定后就给200分!!!这是我期末考试的题目, 兄弟们要快快快!! 我的email : [email protected] U盘防止格式化 DirectDraw窗口模式下被其他窗口遮挡的问题 我晕了,memcpy的疑问 怎样得到COM监控程序发现的改变后的字符串? 一道送分题 三裤衩拉,散分~~~ 为何会出现收不到数据包的现象??? 大家介绍一下这个网站http://www.codeproject.com/,及使用技巧啊 找不到控件怎么办啊? IsDBCSLeadByte提问有关中文字符问题??sos 安装VC6.0的问题 这里有没有谁用Microsoft eMbedded Visual C++ 3.0在Win CE下编程的吗?
优先级类 标识符 描述
实时 REALTIME_PRIORITY_CLASS 立即对事件作出响应,执行关键时间的任务。会抢先于操作系统组件之前运行。
高 HIGH_PRIORITY_CLASS 立即对事件作出响应,执行关键时间的任务。
高于正常 ABOVE_NORMAL_PRIORITY_CLASS 在正常优先级与高优先级之间运行(Windows2000)。
正常 NORMAL_PRIORITY_CLASS 没有特殊调度需求
低于正常 BELOW_NORMAL_PRIORITY_CLASS 在正常优先级与空闲优先级之间运行(Windows2000)。
空闲 IDLE_PRIORITY_CLASS 在系统空闲时运行。
设置方法:
BOOL SetPriorityClass( HANDLE hProcess, DWORD dwPriority );
DWORD GetPriorityClass( HANDLE hProcess );
使用命令外壳启动一个程序时,该程序的起始优先级是正常优先级。如果使用Start命令来启动该程序,可以使用一个开关来设定应用程序的起始优先级。例如:
c:\>START /LOW CALC.EXE
Start命令还能识别/BELOWNORMAL、/NORMAL、/ABOVENORMAL、/HIGH和/REALTIME等开关。
线程的相对优先级:
相对优先级 标识符 描述
关键时间 THREAD_PRIORITY_TIME_CRITICAL 对于实时优先级类线程在优先级31上运行,对于其他优先级类,线程在优先级15上运行。
最高 THREAD_PRIORITY_HIGHEST 线程在高于正常优先级上两级上运行。
高于正常 THREAD_PRIORITY_ABOVE_NORMAL 线程在正常优先级上一级上运行。
正常 THREAD_PRIORITY_NORMAL 线程在进程的优先级类上正常运行。
低于正常 THREAD_PRIORITY_BELOW_NORMAL 线程在低于正常优先级下一级上运行。
最低 THREAD_PRIORITY_LOWEST 线程在低于正常优先级下两级上运行。
空闲 THREAD_PRIORITY_IDLE 对于实时优先级类线程在优先级16上运行对于其他优先级类线程在优先级1上运行。
设置方法:
BOOL SetThreadPriority( HANDLE hThread, DWORD dwPriority );
DWORD GetThreadPriorityClass( HANDLE hThread );
{
// TODO: Add your specialized code here and/or call the base class
//return CWinApp::Run();
HACCEL hAccel; hAccel=LoadAccelerators(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));
MSG msg;
while(1)
{
if(PeekMessage(&msg,NULL,0,0,PM_NOREMOVE))
{
if(GetMessage(&msg,NULL,0,0)==FALSE)
{
ExitInstance();
return msg.wParam ;
}
//if(!TranslateAccelerator(hWnd,hAccel,&msg))
{
//处理加速键
// TranslateMessage(&msg);
// DispatchMessage(&msg);
//
}
}
else
{
WaitMessage();
//可以不用 WaitMessage,而执行自己的操作。
//或者在App的OnIdle()里执行自己的操作。
//这只是利用CPU的空闲时间,对其它应用程序没有影响。
}
}
return TRUE;
}
优先级低是因为是在空闲的时候比较有用
以前有一个类似的软件
好像是美国什么地方发的,利用家用电脑计算分析什么信号,再通过上网的时候发回给什么什么航天局,好像是叫在家里寻找外星人的计划,以后就没有消息了。呵呵
大家有兴趣的话可以到网上去看看 setiathome.berkeley.edu
否则,你的系统鼠标都不会响应
假定: 对一家公司的员工进行管理:
包括人员名字,出生日期,加入公司的年份,那个部门(用ring0---ring9表示10个部门) ,工资标准等(多多不限)
要求有对(假如有员工改名, 可以实现改名, 尽管使用中不常见, 但主要是为了实现面向对象思想)(更改工资标准)(开除员工和增加员工)(通过工龄即加入公司的时间来对员工进行排序, 同一年的可随便排)(通过部门的对员工排序, 个部门的集中在一起显示,譬如ring0的排了下了跟着就是全是ring1部门的)
请兄弟们快点回帖, 把源代码和程序发给我, 搞定后就给200分!!!
这是我期末考试的题目, 兄弟们要快快快!!
我的email : [email protected]