我有一个线程,运行时有很高的CPU使用率,怎么办?

xiny120 2003-08-19 04:38:31
写了一个线程,为取一个文本文件中的所有邮件地址(每一行一个邮件地址),然后分析后缀服务器,并且分类存放。取地址时用的是循环,当文件很小时还可以,当文件有10W条记录时,CPU的使用率到了100%,怎么样能减少线程的CPU使用率?

procedure TPickEmail.Execute;
var
FileName,EmailAddr: string;
MyEmailFile:TextFile;
FileCount,index:integer;
PathName:array[0..MAX_PATH] of char;
begin
{ Place thread code here }
CurEmail:='开始整理邮件地址!';
self.Synchronize(LogInfo);


for FileCount:=0 to EmailFileList.Count -1 do
begin
AssignFile(MyEmailFile,EmailFileList[FileCount]);
ReSet(MyEmailFile);
repeat

ReadLn(MyEmailFile,EmailAddr);

SaveEmailByHost(EmailAddr);
CurEmail:=EmailAddr;
self.Synchronize(LogInfo);
until Eoln(MyEmailFile);

CloseFile(MyEmailFile);
if Terminated Then Break;
end;


for index:=0 to StrListArraySize-1 do
begin
GetTempPath(MAX_PATH,PathName);
FileName:=PathName;
FileName:=FileName+'mc87454\';
CreateDir(FileName);
if(StrListArray[index]<>nil) Then
begin
FileName:=FileName+'\'+StrListArray[index].Strings[0]+'.TXT';
StrListArray[index].SaveToFile(FileName);
end;

end;

CurEmail:='结束整理邮件地址!';
self.Synchronize(LogInfo);

end;
...全文
62 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
l_xiaofeng 2003-08-19
  • 打赏
  • 举报
回复
对,SLEEP必须有,但如果记录多,占用资源高可以考虑再开一个线程!
foxnt 2003-08-19
  • 打赏
  • 举报
回复
在循环中,加上个sleep(1)
sduzjw 2003-08-19
  • 打赏
  • 举报
回复
線程通常會有一個默認的優先級,你可以設置它的優先級低一點,這樣占用的CPU時間就會減少了,不知對不對

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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