CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C++ Builder >  网络及通讯开发

为什么CPU在下段程序运行时间总是100%的忙?有办法解决吗?谢谢

楼主dingbing122(oracle)2003-12-03 06:54:38 在 C++ Builder / 网络及通讯开发 提问

pszBuffer   =   new   BYTE[iFileLength+1];  
   
              iBytesRead   =   FileRead(iFileHandle,   pszBuffer,   iFileLength);  
              FileClose(iFileHandle);  
                int   k,i,a,b,c;  
                for(i=0;i<34     ;i++)          
                    {  
                          a=pszBuffer[i];  
                          b=pszBuffer[i+1];  
                          c=pszBuffer[i+2];  
                          Delay(1000);   //&Ntilde;&Oacute;&sup3;&Ugrave;100&ordm;&Aacute;&Atilde;&euml;  
                          NMUDP1->SendBuffer(pszBuffer,1024,1024)   ;    
                    }  
  问题点数:100、回复次数:10Top

1 楼fatwave(风中的雨)回复于 2003-12-03 09:16:39 得分 10

在for中加上Application->ProcessMessages();   分担些CPU的时间片Top

2 楼netsys2(来电!)回复于 2003-12-03 09:47:13 得分 10

感觉是NMUDP1->SendBuffer的问题,因为你只循环了34次。  
   
  建议1:按楼上说的试试  
  建议2:把发送代码放到线程中执行。  
  Top

3 楼ThinkX(秋天的树)回复于 2003-12-03 12:59:34 得分 10

Application->ProcessMessages()不会减少CPU占用率的。Top

4 楼Raptor(猛禽)回复于 2003-12-03 13:43:41 得分 10

同意THINKX  
   
  要减小CPU占用,可以把DELAY改用定时器,然后用一个EVENT来WAITFORTop

5 楼penu(懒猫·子在川上之再上征程·杀人无心之寓怒于静)回复于 2003-12-03 13:59:30 得分 10

同意来电的说法。Top

6 楼nanyu(南郁(d2school.com))回复于 2003-12-03 15:37:07 得分 10

for(i=0;i<34     ;i++)          
                    {  
                          a=pszBuffer[i];  
                          b=pszBuffer[i+1];  
                          c=pszBuffer[i+2];  
                          Delay(1000);   //&Ntilde;&Oacute;&sup3;&Ugrave;100&ordm;&Aacute;&Atilde;&euml;  
                          NMUDP1->SendBuffer(pszBuffer,1024,1024)   ;    
   
                          sleep(1);  
                    }  
  Top

7 楼chifengwatch(chifengwatch)回复于 2003-12-03 15:40:11 得分 10

把发送代码放到线程中执行。Top

8 楼constantine(飘遥的安吉儿)回复于 2003-12-07 23:18:13 得分 10

同意THINKX,另外你Delay(1000)来干什么?这样很耗资源。  
  最好如楼上说的,用线程吧,这样会好很多的Top

9 楼RomanticProgrammer() 兰企鹅||南极俺最帅 ()回复于 2003-12-07 23:26:51 得分 10

如果你用的非阻塞方式发送数据,请在NMUDP1->SendBuffer(pszBuffer,1024,1024)   ;   后面加上Sleep(1);就可以了。Top

10 楼constantine(飘遥的安吉儿)回复于 2003-12-08 22:28:45 得分 10

高手来了Top

相关问题

  • 随便运行个程序CPU就100%
  • 运行ASP.NET程序CPU占用率100%
  • 为什么我的程序一运行,CPU就使用100%?
  • 我的direct程序一运行cpu的利用率就是100%
  • 如何解决程序运行时cpu占用率100%
  • 运行JAVA程序
  • 请教:我希望我的程序,在检查到cpu忙时,让出控制权,在检查到空隙时运行,该怎么做?
  • 在有PIII CPU的计算机上怎么运行FOXPRO 2.5,程序运行不正常???
  • 帮忙看看数据库的程序,运行不出来
  • 帮忙看看这段程序,总是运行不了。

关键词

  • cpu
  • pszbuffer
  • sendbuffer

得分解答快速导航

  • 帖主:dingbing122
  • fatwave
  • netsys2
  • ThinkX
  • Raptor
  • penu
  • nanyu
  • chifengwatch
  • constantine
  • RomanticProgrammer
  • constantine

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo