![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Паралельное выполнение функций. [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