ВУЗ:
Составители:
Рубрика:
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
- …
- следующая ›
- последняя »
