放掉所有分,求此答案------多线程临界区
procedure TTest.execute;
var
i:integer;
begin
FreeOnTerminate:=true;
enterCriticalSection(CS);
for i:=1 to maxsize do
begin
inc(incnum);
TT[i]:=incnum;
sleep(5); //这一句是否每循环一次就睡眠五秒,并且不执行下一个线程
end;
end;
procedure Tform1.T1done(sender:Tobject);
var
i:Integer;
begin
listbox1.Items.Clear;
for i:=1 to maxsize do
begin
listbox1.Items.Add(inttostr(TT[i]));
end;
leavecriticalsection(cs);
end;
procedure Tform1.T2done(sender:Tobject);
var
i:integer;
begin
listbox2.Items.Clear;
for i:=1 to maxsize do
listbox2.Items.Add(inttostr(TT[i]));
leavecriticalsection(cs);
end;
procedure TForm1.Button1Click(Sender: TObject);//执行线程
begin
initializeCriticalSection(CS);
T1:=TTest.Create(false);
T1.OnTerminate:=T1done;
T2:=TTest.Create(false);
T2.OnTerminate:=T2done;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
deletecriticalsection(cs);
end;