Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.05;
Скачать: CL | DM;

Вниз

Помогите с Thread   Найти похожие ветки 

 
c0pYc@t   (2002-07-17 08:34) [0]

Помогите, как сделать так чтобы при вызове моей функции, например,

SetNewProcedure(s);
у меня возникал независимый процесс
и если еще раз SetNewProcedure(s); то будет следующий и т.д.
после выполнения определенных команд процесс сам помирает и все окей

ПОМОГИТЕ КТО ЧЕМ МОЖЕТ, ПОМОГИТЕ


 
Виктор Щербаков ©   (2002-07-17 08:47) [1]

Тебе нужен процесс(Process) или поток(Thread)?
Вещи-то разные.


 
c0pYc@t   (2002-07-17 09:00) [2]

>Виктор Щербаков ©
Так то мне без разницы просто хочу сделать независимые процессы, а на основе чего мне без разницы.


 
Виктор Щербаков ©   (2002-07-17 09:07) [3]

Если ты действительно этого хочешь, то почему так странно озаглавил свой вопрос? Причем здесь Thread?

Для создания нового процесса воспользуйся функцией CreateProcess.


 
c0pYc@t   (2002-07-17 09:38) [4]

>Виктор Щербаков © А как оно действует и чем отличается от Thread?


 
Anatoly Podgoretsky ©   (2002-07-17 09:41) [5]

Создает незаввисимый процесс, а нить действует в рамках процесса.


 
tovSuhov ©   (2002-07-17 09:46) [6]

> c0pYc@t
ИМХО, тебе нужен именно Thread (нить)...


 
Виктор Щербаков ©   (2002-07-17 09:50) [7]

tovSuhov © (17.07.02 09:46)
В связи с этим анекдот вспомнил.
Больной врачу:
"Поскольку я больной, я оплачиваю лечение, то я и решаю от чего меня лечить".

Так что пусть c0pYc@t сам решает :)


 
c0pYc@t   (2002-07-17 09:52) [8]

>Anatoly Podgoretsky ©
>tovSuhov ©
По сути моя прога получив данные пытается их обработать, а если придут еще данные, то возникнет отказ.
Я же хочу чтобы данные пришли, возник новый процесс(функция) или что еще... Но что бы небыло такого, как пришли новые данные, а старые еще не обработались и им идет отказ в обслуживании.
Посоветуйте мне как это сделать.


 
c0pYc@t   (2002-07-17 09:54) [9]

>Виктор Щербаков © Лучше бы помогли чем смеяться над "больным человеком"


 
Виктор Щербаков ©   (2002-07-17 09:56) [10]

c0pYc@t (17.07.02 09:52)
Такое можно реализовать как с помощью процессов так и с помощью потоков. Нечто вроде архитектур Classic и Super Server в СУБД Interbase. ИМХО, с помощью потоков(Threads) проще.


 
c0pYc@t   (2002-07-17 10:00) [11]

>Виктор Щербаков ©
Ну так как мне это сделать?


 
Виктор Щербаков ©   (2002-07-17 10:03) [12]

См. TThread в Delphi Help. Кстати, в комплект поставки Delphi входит демка по работе с этим классом (параллельно сортируются три массива случайных чисел).
Ну а можешь и на голом API. См. в SDK Thread Functions.


 
tovSuhov ©   (2002-07-17 10:09) [13]

> Виктор Щербаков
...ИМХО, с помощью потоков(Threads) проще

Я об этом и говорил, просто не пояснил, с чем Вы прекрасно справились! :-))


 
c0pYc@t   (2002-07-17 10:51) [14]

>tovSuhov © расскажите хоть примерно как это сделать


 
Anatoly Podgoretsky ©   (2002-07-17 11:01) [15]

c0pYc@t (17.07.02 10:51)
Тебе же показали где лежит пример, он к тому же еще и визуальный
- "DEMOS"
Или надо его сюда скопировать, можно конечно, но остальные не поймут


 
c0pYc@t   (2002-07-17 12:22) [16]

В экзампле создается 3 потока, которые описываютя отдельно друг от друга. Мне интересно, а можно ли описать одну функцию и вызывать ее одну, но с разными значениями параметров


 
Виктор Щербаков ©   (2002-07-17 12:27) [17]

c0pYc@t (17.07.02 12:22)
Да. Можно запускать поток с одним и тем же кодом много раз.


 
c0pYc@t   (2002-07-17 12:36) [18]

>Виктор Щербаков © фанкс


 
Rooman ©   (2002-07-22 11:39) [19]

type
TProcParams=record
...
end;

TMyThrProc=class(TThread)
private
FParams:TProcParams;
protected
procedure Execute;override;
public
constructor Create(params:TProcParams);
end;

implementation

constructor TMyThrProc.Create(params:TProcParams);
begin
inherited Create(true);
FreeOnTerminate:=true;
FParams:=params;
resume;
end;

procedure TMyThrProc.Execute;
begin
// входные параметры лежат в поле FParams:TProcParams
...
// по выходу из Execute объект сам себя уничтожает
end;


 
c0pYc@t   (2002-07-24 11:59) [20]

2 Rooman © а можно ли потом эти данные забрать или по завершении вызвать функцию которая их куда нуна запихнет?


 
Skier ©   (2002-07-24 12:02) [21]

>c0pYc@t

;
> завершении вызвать функцию которая их куда нуна запихнет



OnTerminate ?


 
c0pYc@t   (2002-07-24 12:11) [22]

2 Skier © нет, данные которые получились нужно сохранить допустим в массиве, а потом terminate


 
Skier ©   (2002-07-24 12:13) [23]

>c0pYc@t
OnTerminate occurs after the thread"s Execute method has returned and before the thread is destroyed.


 
c0pYc@t   (2002-07-24 13:41) [24]

2 Skier © это то понятно но как мне достать FParams как описано выше они же локальные и до окончания я не смогу их использовать, допустим у меня есть глоб массив

mas:array of TMyThrProc
masitem :array of TProcParam
...
создаем поток

mas[i] := Create(params);

он отрабатывает и как зарисать данные
????
masitem[i] := FParams
????
грубо говоря



Страницы: 1 вся ветка

Текущий архив: 2002.08.05;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.016 c
1-13611
Aleksandr
2002-07-24 17:45
2002.08.05
Можно ли быстро два массива байт превратить в две строки?


1-13664
иван
2002-07-23 14:32
2002.08.05
Кодирование файла


1-13627
Leyler
2002-07-25 04:28
2002.08.05
из Excel в базу


4-13865
Xoy
2002-05-28 06:40
2002.08.05
Файл в памяти


4-13853
KeVRter
2002-05-27 23:15
2002.08.05
Помогите разобраться с rundll32.