Blue
Red
Green
Orange
Voilet
Slate
Dark

如何控制线程对系统资源的占用率(100分)

刘麻子

Unregistered / Unconfirmed
GUEST, unregistred user!
可以在线程中用时钟呀!
 
I

itren

Unregistered / Unconfirmed
GUEST, unregistred user!
"减低优先级可以吗?
顺便提一下,如果程序中有
while(true)
begin
end;
肯定占用100%
我以前写的一个程序就占用100%,后来不得不修改"
我觉得这句话有点问题.
你在 begin
... end;
中间加一个 sleep(1);
肯定不会有 100%了。
 
Z

ZZHI

Unregistered / Unconfirmed
GUEST, unregistred user!
:)
WM_RECORDAVAILABLE ,这个可以改为自己的消息
用PostThreadMessage 给线程发送消息!
 
G

ghb1974

Unregistered / Unconfirmed
GUEST, unregistred user!
WaitForSingleObject,WaitForMultiObjects的性能太第了,要占用400——600个时间片,
而且这主要是用在线程同步上的
 
J

jonson

Unregistered / Unconfirmed
GUEST, unregistred user!
有没有人能说清楚一点
 
G

ghb1974

Unregistered / Unconfirmed
GUEST, unregistred user!
一般是在没有要处理的数据时加sleep(1),有要处理的数据处理完就直接进行下一次的处理,就是不sleep了。另外sleep在不同机器上的效果可能不一样。
 

猛禽

Unregistered / Unconfirmed
GUEST, unregistred user!
一般来说,一个线程中没有使线程空闲的代码(如WAITFOR,SUSPEND等),OS会把多余的时间片都分给它,因为闲着也是闲着,只要有线程或进程需要,OS一定会尽量分配给它CPU时间的。这样占用100%也就是正常的了。
所以要看你的线程要干什么。如果只是检测状态,有几种方式:
一个是通过定时器进行定时检测,
如果要实时性好,则完全可以通过编写驱动将状态转换事件变成一个EVENT,通过EVENT来唤醒线程。
这才是充分利用CPU的做法。
以下是广告时间^_^
推荐偶这篇文章:
http://www.csdn.net/develop/Read_Article.asp?Id=22466
 
S

shibaoping

Unregistered / Unconfirmed
GUEST, unregistred user!
在定时器里定时监测线程,比如:300毫秒监测一次线程是否终止,若未终止,强行终止。
再在另一个定时器开启线程。这样cpu利用率可以降到20%作用。
 
J

jonson

Unregistered / Unconfirmed
GUEST, unregistred user!
猛禽
如果要实时性好,则完全可以通过编写驱动将状态转换事件变成一个EVENT,通过EVENT来唤醒线程。
有没有个简单的例子啊
等回复
 
顶部 底部