Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 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
9-1070546076
miek
2003-12-04 16:54
2004.05.09
Предложение


4-1079420628
adnry
2004-03-16 10:03
2004.05.09
ZwShutdownSystem (из ntdll.dll) - самый быстрый вариант, даже не


14-1082127074
nikitos
2004-04-16 18:51
2004.05.09
Протестите прогу


14-1082392754
Mim1
2004-04-19 20:39
2004.05.09
Linux vs Windows


8-1075933617
DjTheme
2004-02-05 01:26
2004.05.09
Как проиграть МП3 или что то другое на двух звуковухах





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский