我建立了一个最简单的例子想了解线程的运行情况,发现结果cpu占用为100%,请问为什么,我的例子是新建立一个form1在上边有个按扭button1,然后建立一个线程test,
在它的excute里边写上如下代码
while not Terminated do
begin
ListenRt1; // Synchronize(
end;
listenrt1 为自定义的空的函数。
在form1的button的click事件里边写上代码(test为我新建的那个线程)
rt1 := test.Create(False);
当我点击按纽以后,cpu的占用率为100%,那是不是表明如果建立一个与时间同步的线程,譬如监听线程,是不是cpu都要占用100%?请高手解释一下,如果我不希望是100%,该如何去做。
在它的excute里边写上如下代码
while not Terminated do
begin
ListenRt1; // Synchronize(
end;
listenrt1 为自定义的空的函数。
在form1的button的click事件里边写上代码(test为我新建的那个线程)
rt1 := test.Create(False);
当我点击按纽以后,cpu的占用率为100%,那是不是表明如果建立一个与时间同步的线程,譬如监听线程,是不是cpu都要占用100%?请高手解释一下,如果我不希望是100%,该如何去做。
解决方案 »
- 关于读取服务器端数据库的问题!!!
- 还是一个关于报表的问题,请大家再帮帮我!
- 2000下怎样隐藏进程
- 用什么办法可以实现取汉字的第一个拼音??
- 麻烦看看小弟写的简单读卡程序有没错
- 根据选择的不同,在窗体同一块地方显示不同的界面,不要使用tabcontrol什么的,是怎么实现的,多谢!
- 如何在Delphi中设置回调?
- 到底sql语言中的''代表佘么
- 在 WORD 中的表格插入一新行(在前或后),高分
- 我用isapi编写的网页,在左下角提示“网页有错误”,这是为何?
- 如果Linux代替WINDOWS之后,编程界会发生什么样的变化?DELPHI会更有发展前途吗?请大家来谈谈。
- 关于p2p原理。在线测试。
begin
ListenRt1;
Sleep(0);
end;
2、利用多媒体定时器或其他手段产生脉冲事情;
3、线程中的主程序采用该脉冲时间驱动。
(ps. 如果硬件本身能提供驱动信号就更好了。)这样做的好处是充分利用了WaitForSingleObject函数的占用CPU时间少的特点。
1.开辟一个请求缓冲区,请求源把它的每一个请求放于缓冲区内,服务进程周期性地查询缓冲区中的请求,有则处理之,然后sleep(SLEETTIME),睡民时间根据请求频率而定。
2.开辟一个请求缓冲区,请求源一旦有请求,首先把请放于缓冲区,然后发送一个消息给服务进程(类似于中断)。如果请求的信号信息不大,则可以存储于消息的存储空间中,从而不用另外开辟缓冲区缓存请求。
不要使Sleep(0),但每次都Sleep也不行,程序会失去很多工作时间的,所以要根据应用来定的http://lysoft.7u7.net