ВУЗ:
Составители:
Рубрика:
17
TFooThread = class(TThread)
protected
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;
function GetNextNumber: Integer;
begin
Result := NextNumber;// Функция возвращает глобальную переменную
Inc(NextNumber); // Инкремент глобальной переменной
end;
procedure TFooThread.Execute;
var
i: Integer;
begin
OnTerminate : = MainForm.ThreadsDone;
for i := 1 to MaxSize do
begin
GlobalArray[i]:=GetNextNumber;// Устанавливаем элемент массива
Sleep (5); // Позволяем потокам "перемешаться"
end;
end;
procedure TMainForm.ThreadsDone(Sender: TObject);
var
i: Integer;
begin
Inc(DoneFlags);
if DoneFlags = 2 then // Оба потока завершены
for i := 1 to MaxSize do
{Заполняем список элементами массива}
Listboxl.Items.Add(IntToStr(GlobalArray[i]));
end;
procedure TMainForm.ButtonlClick(Sender: TObject);
begin
TFooThread.Create(False); // Создаем потоки
TFooThread.Create(False);
end;
end.
17 TFooThread = class(TThread) protected 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; function GetNextNumber: Integer; begin Result := NextNumber;// Функция возвращает глобальную переменную Inc(NextNumber); // Инкремент глобальной переменной end; procedure TFooThread.Execute; var i: Integer; begin OnTerminate : = MainForm.ThreadsDone; for i := 1 to MaxSize do begin GlobalArray[i]:=GetNextNumber;// Устанавливаем элемент массива Sleep (5); // Позволяем потокам "перемешаться" end; end; procedure TMainForm.ThreadsDone(Sender: TObject); var i: Integer; begin Inc(DoneFlags); if DoneFlags = 2 then // Оба потока завершены for i := 1 to MaxSize do {Заполняем список элементами массива} Listboxl.Items.Add(IntToStr(GlobalArray[i])); end; procedure TMainForm.ButtonlClick(Sender: TObject); begin TFooThread.Create(False); // Создаем потоки TFooThread.Create(False); end; end.
Страницы
- « первая
- ‹ предыдущая
- …
- 15
- 16
- 17
- 18
- 19
- …
- следующая ›
- последняя »