Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Паралельное выполнение функций. [D5, Win95/98, WinXP]


Игорь ©   (2004-03-19 12:24:00) 

Возможно ли в делфи паралельное выполнение функций.
Желательно одной и той же, но с разными параметрами.


Digitman   (2004-03-19 12:46:00) [1]

type

TFunc = function(Params: Variant): Integer;

TMyThread = class(TThread)
private
 FFunc: TFunc;
 FParams: Variant;
protected
 procedure Execute; override;
public
 constructor Create(Func: TFunc; Params: Variant);
end;

constructor TMyThread.Create;
begin
 FFunc := Func;
 FParams := Params;
 inherited Create(false);
end;
begin
end;

procedure TMyThread.Execute;
begin
 Returnvalue := FFunc(FParams);
end;

...

function SomeFunc(Params: Variant): Integer;
begin
 Result := Params[0] + Params[1];
end;

...

var
 Threads: array[0..9] of TMyThread;
 Totalresult: Integer;
..

for i := 0 to 9 do
 Threads[i] := TMyThread.Create(@SomeFunc, VarArrayOf([Random[10], Random[10]]));

Totalresult := 0;
for i := 0 to 9 do
begin
   Inc(Totalresult, Threads[i].WaitFor;
   FreeAndnil(Threads[i]);
end;

ShowMessage(IntToStr(Totalresult));


hyper_omsk   (2004-03-19 12:29:00) [2]

Я так понял тебе нужна рекурсия
почитай про нее в faq
к примеру обход каталогов там как раз то что надо


Digitman   (2004-03-19 12:29:00) [3]

да, возможно

см. тему threads


Наверх

Титульная страница Поиск, карта сайта Написать письмо