如何控制CPU的使用率??????

dragonsnake 2003-12-25 10:37:25
如何控制一个程序的CPU使用率,比如说一个windows服务

谢谢
...全文
1974 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
jn_sly 2004-02-27
  • 打赏
  • 举报
回复
up
hxy2003 2004-01-12
  • 打赏
  • 举报
回复
u[
henryfan1 2004-01-12
  • 打赏
  • 举报
回复
这个应该是操作系统控制的吧。
jn_sly 2004-01-12
  • 打赏
  • 举报
回复
up
dragonsnake 2004-01-06
  • 打赏
  • 举报
回复
没有人知道呀??
呜呜呜呜

帮忙up一下也可以亚
dragonsnake 2003-12-29
  • 打赏
  • 举报
回复
没有人知道呀??
呜呜呜呜

帮忙up一下也可以亚
dragonsnake 2003-12-26
  • 打赏
  • 举报
回复
没有人知道呀??
呜呜呜呜
dragonxia 2003-12-26
  • 打赏
  • 举报
回复
up
xue xi ? xue xi?
dragonsnake 2003-12-25
  • 打赏
  • 举报
回复
采用适时休眠是一种办法,但是不是最终的解决方法
有没有更好的方式呢

不如说在IIS6上,可以控制每个进程池的CPU使用率,Sql Server 也可以

xiays 2003-12-25
  • 打赏
  • 举报
回复
好像是做不到吧,为什么有这种需求呢.
13880079673 2003-12-25
  • 打赏
  • 举报
回复
上面的是显示,而不是控制吧!

要控制CPU利用率,只有采用适时休眠的办法,首先引用using System.Threading;
在你需要让出CPU时间的地方加上
Thread.Sleep(100);
括号里面是本进程休眠时间(毫秒计);

比如一个循环
for(int i = 0; i < 100000; ++i)
{
/////////////////////////////
}
运行这个程序,你会看到该进程CPU占有率很高

而如果改为
for(int i = 0; i < 100000; ++i)
{
Thread.Sleep(10);
/////////////////////////////
}
你可以明显看到该进程CPU占用率已经很低了,只是执行时间会慢一点。不过你也可以使用Thread.Sleep(0),这样好像是多此一举,不过你要是用过就知道好处了

pyz8000 2003-12-25
  • 打赏
  • 举报
回复
高手就是高手,,

我通常的做法是看任务管理器,看用的多就结束任务
polarlm 2003-12-25
  • 打赏
  • 举报
回复
using System;
using System.Diagnostics;
using System.Threading;


public class CpuLoadInfo
{

// auxiliary print methods
private static void Say ( string txt )
{
Console.WriteLine(txt);
}

// auxiliary print methods
private static void Say()
{
Say("");
}

// The main method. Command line arguments are ignored.
[STAThread]
public static void Main()
{
Say("$Id: CpuLoadInfo.cs,v 1.2 2002/08/17 17:45:48 rz65 Exp $");
Say();

Say("Attempt to create a PerformanceCounter instance:");
Say("Category name = " + CategoryName);
Say("Counter name = " + CounterName);
Say("Instance name = " + InstanceName);
PerformanceCounter pc
= new PerformanceCounter(CategoryName,CounterName,InstanceName);
Say("Performance counter was created.");
Say("Property CounterType: " + pc.CounterType);
Say();

Say("Property CounterHelp: " + pc.CounterHelp);
Say();
Say("Entering measurement loop.");

while (true)
{
Thread.Sleep(1000); // wait for 1 second
float cpuLoad = pc.Nextvalue();
Say("CPU load = " + cpuLoad + " %.");
}
}

// constants used to select the performance counter.
private const string CategoryName = "Processor";
private const string CounterName = "% Processor Time";
private const string InstanceName = "_Total";
}

这是在我计算机上的计算结果:
Entering measurement loop.
CPU load = 0 %.
CPU load = 1.941746 %.
CPU load = 4.854369 %.
CPU load = 10 %.
CPU load = 0 %.
CPU load = 2.999997 %.
CPU load = 0.9900987 %.
CPU load = 0 %.
dotnba 2003-12-25
  • 打赏
  • 举报
回复
不知道呢
hivak47 2003-12-25
  • 打赏
  • 举报
回复
polarlm(polarlm)的程序不错,要学习一下,还有没有其他的方法呀?
benbencatrabbit 2003-12-25
  • 打赏
  • 举报
回复
xue xi
dragonxia 2003-12-25
  • 打赏
  • 举报
回复
up
13880079673 2003-12-25
  • 打赏
  • 举报
回复
可以设置进程的优先级,但是好像不能控制他的CPU利用率,也许是我孤陋寡闻吧

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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