ВУЗ:
Составители:
Рубрика:
22
procedure Execute; override;
end;
var
MainForm: TMainForm;
implementation
{$R *.dfm}
const
MaxSize = 128;
var
NextNumber: Integer = 0;
DoneFlags: Integer = 0;
GlobalArray: array[1..MaxSize] of Integer;
e: TEvent;
function GetNextNumber: Integer;
begin
Result := NextNumber;
inc(NextNumber);
end;
procedure TFooThread.Execute;
var
i: Integer;
res: TWaitResult;
begin
OnTerminate:=MainForm.ThreadsDone;
res:=e.WaitFor(INFINITE);
if res = wrSignaled then
begin
e.ResetEvent; // Сброс события
for i := 1 to MaxSize do
begin
GlobalArray[i] := GetNextNumber;
Sleep(5);
end;
e.SetEvent // Установка события
end;
end;
procedure TMainForm.ThreadsDone(Sender: TObject);
var
i: Integer;
begin
inc(DoneFlags);
if DoneFlags = 2 then
begin
for i := 1 to MaxSize do
Listbox1.Items.Add(IntToStr(GlobalArray[i]));
e.Free; // Освобождение памяти
end;
22 procedure Execute; override; end; var MainForm: TMainForm; implementation {$R *.dfm} const MaxSize = 128; var NextNumber: Integer = 0; DoneFlags: Integer = 0; GlobalArray: array[1..MaxSize] of Integer; e: TEvent; function GetNextNumber: Integer; begin Result := NextNumber; inc(NextNumber); end; procedure TFooThread.Execute; var i: Integer; res: TWaitResult; begin OnTerminate:=MainForm.ThreadsDone; res:=e.WaitFor(INFINITE); if res = wrSignaled then begin e.ResetEvent; // Сброс события for i := 1 to MaxSize do begin GlobalArray[i] := GetNextNumber; Sleep(5); end; e.SetEvent // Установка события end; end; procedure TMainForm.ThreadsDone(Sender: TObject); var i: Integer; begin inc(DoneFlags); if DoneFlags = 2 then begin for i := 1 to MaxSize do Listbox1.Items.Add(IntToStr(GlobalArray[i])); e.Free; // Освобождение памяти end;
Страницы
- « первая
- ‹ предыдущая
- …
- 20
- 21
- 22
- 23
- 24
- …
- следующая ›
- последняя »