亲们帮忙看一个多线程问题,谢谢!
前提是这样的:我有100多万个数据要通过一个函数计算,开始我用一个线程去计算一次要一个多小时,于是我想通过多线程分组计算。但是却没有什么效果,速度并没有变快,而且同样会卡死主线程
TMREWSync *readl;
class GetTZ : public TThread
{
private:
protected:
void __fastcall Execute();
public:
SSQ *start;
SSQ *end;
int tzno;
__fastcall GetTZ(bool CreateSuspended,SSQ *stp,SSQ *edp,int ctn);
void __fastcall SSQTj();
};
__fastcall GetTZ::GetTZ(bool CreateSuspended,SSQ *stp,SSQ *edp,int ctn)
: TThread(CreateSuspended)
{
start=stp;
end=edp;
tzno=ctn;
}
void __fastcall GetTZ::Execute()
{
//---- Place thread code here ----
Synchronize(SSQTj);
}
void __fastcall GetTZ::SSQTj()
{
AnsiString selstr;bool SelRed[33];bool SelBlue[16];bool Sure[33];bool Del;int Range[2];
for(int lis=0;lis<tzno;lis++)
{
int countsure=0;
//TMutiReadExclusiveWriteSynchronizer;
readl->BeginRead();
selstr=NetTZ->Strings[lis];
readl->EndRead();
//------------计算数据
}
}
//-------------------主线程调用
while(end)
{
end=end->next;
count++;
if(end==NULL||count>=maxtz)
{
GetTZ *tjThread;
tjThread=new GetTZ(true,st,end,NetTZ->Count);
tjThread->Resume();
countthread++;
count=0;
st=end;
}
}