怎样让我的程序占用一定比率的CPU时间?(跪求高手指点)

koolfool 2006-04-21 05:00:15
最近看到一篇论文中提到,作者仿真实验的时候,他能够维持他的仿真程序始终占用CPU 80%的时间,并且这个比率是可以调节的。我现在想模拟它的程序,控制一定比率的CPU时间被我的程序占用,当然,这80%的时间是用来对数据库内容进行搜索的,并不是做无用功:)

我有个大概的想法:

创建一个父进程进行调度,不停地fork()直到父进程和子进程占用时间比率达到80%,然后让子进程在数据库中搜索,但是我不太清楚怎么获得占用CPU的情况,不知道用struct tms和times()函数这个法子行不行?请高手指点一二,如果有更好的办法,小弟不胜感激 55555
...全文
318 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
bolixin008 2006-04-23
  • 打赏
  • 举报
回复
错了 是第5章
bolixin008 2006-04-23
  • 打赏
  • 举报
回复
在windows核心编程一书中有讨论. 在第4章. 如果你想约束进程,必须要把它捆绑到一个作业中去,然后可以通过调用系统函数SetInformationJobObject(...)来对作业进行限制.其中的一个结构体可以约束作业的CPU占用时间.
wlzqi 2006-04-21
  • 打赏
  • 举报
回复
好像作业可以吧
kui3000 2006-04-21
  • 打赏
  • 举报
回复
那怎么调整呢?
另外20%空闲的不想忙等待for();这种
想留出来做紧急时间发生的时候处理
DentistryDoctor 2006-04-21
  • 打赏
  • 举报
回复
随时判断你当前程序的CPU使用率。
使用Perform Couters来取得CPU占用率。
koolfool 2006-04-21
  • 打赏
  • 举报
回复
怎么获得所有线程或线程的CPU时间?struct tms和times()函数可以么?
Qiushen 2006-04-21
  • 打赏
  • 举报
回复
那个线程,然后
double tt = 1.0;
while(true)
{
for (int i = 0; i < n; i++)
{
tt = 1.0 * 2.0 * 3.7 / 8.9 * 4.5.....; // 一些无用的计算
}
nCpuTime = 取得CPU占用率;
if (nCpuTime != 自己要所要)
{
调整 n
}
}
sycnick 2006-04-21
  • 打赏
  • 举报
回复
控制进程优先级,推荐资料《window核心编程》+ MSDN

15,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧