为什么CPU在下段程序运行时间总是100%的忙?有办法解决吗?谢谢
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); //ÑÓ³Ù100ºÁÃë
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); //ÑÓ³Ù100ºÁÃë
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




