Форум: "Система";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
ВнизПаралельное выполнение функций. Найти похожие ветки
← →
Игорь (2004-03-19 12:24) [0]Возможно ли в делфи паралельное выполнение функций.
Желательно одной и той же, но с разными параметрами.
← →
Игорь (2004-03-19 12:24) [0]Возможно ли в делфи паралельное выполнение функций.
Желательно одной и той же, но с разными параметрами.
← →
hyper_omsk © (2004-03-19 12:29) [1]Я так понял тебе нужна рекурсия
почитай про нее в faq
к примеру обход каталогов там как раз то что надо
← →
hyper_omsk © (2004-03-19 12:29) [1]Я так понял тебе нужна рекурсия
почитай про нее в faq
к примеру обход каталогов там как раз то что надо
← →
Digitman © (2004-03-19 12:29) [2]да, возможно
см. тему threads
← →
Digitman © (2004-03-19 12:29) [2]да, возможно
см. тему threads
← →
Digitman © (2004-03-19 12:46) [3]
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));
← →
Digitman © (2004-03-19 12:46) [3]
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));
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.033 c