我有一个线程,运行时有很高的CPU使用率,怎么办?
写了一个线程,为取一个文本文件中的所有邮件地址(每一行一个邮件地址),然后分析后缀服务器,并且分类存放。取地址时用的是循环,当文件很小时还可以,当文件有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;