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

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

потоки текут [D5]


jorh ©   (2002-01-15 14:32:00) 

пиплы просвятите : есть такая штука в File\New.. ThreadObject.
Могу ли я использовать ее для создания нескольких потоков или для каждого потока мне необходимо снова создавать ThreadObject


Digitman   (2002-01-15 17:05:00) [1]

>eraser
Общая концепция такова :
если объекты класса TSmall хотят изменить поведение, по-умолчанию определенное методом "родителя" (TBigThread.Execute), то необходимо переопределить метод TSmall.Execute с целью реализации иного поведения наследника. Иначе - поведение наследника будет в точности повторять поведение предка


panov   (2002-01-15 16:24:00) [2]

Пример:
-------------
TMyThread := class(TThread)
private
FFirstPar: String;
FNextPar: String;
public
constructorCreate(const FirstParameter, NextParameter: String);
end;

А при реализации конструктора можно использовать эти параметры:

constructor TMyThread.Create(const FirstParameter, NextParameter: String);
begininherited Create( True);
FreeOnTerminate := True;
FFirstPar := FirstParameter; //Инициализация переменных
FNextPar := NextParameter;
Resume; //Переводим поток в состояние «Активный»
//Далее в процедуре Execute используем эти полученные параметры.
end;

procedureTMyThread.Execute;
begin
...
ifFFirstPar=... then...
ifFNextPar=... then...

...
end;

Создание потоков:
TMyThread.Create("First","Вася");
TMyThread.Create("First","Петя");


eraser   (2002-01-15 16:21:00) [3]

с классами то понятно. Вы мне тормозу просто скажите Execute с моим кодом мне написать 1 раз для родительского класса
TBigThread= class(TThread)
protected
procedure Execute; override;
или в каждом TSmall = class(TBigThread)писать Execute????
Простите за ламерство просто с потоками никогда не работал


Digitman   (2002-01-15 16:13:00) [4]

>eraser
Вот ты , к примеру, <eraser>. И класс у тебя - TEraser. И дети твои тоже унаследуют твой класс - TEraser. И гены их будут тоже твои (читай - код, твой генетический, непереопределенный ими Execute). И генетическое поведение их тоже будет как у тебя, потому что они - ЭКЗЕМПЛЯРЫ КЛАССА, по образу и подобию которого ты их состругал.


eraser   (2002-01-15 16:06:00) [5]

не понимаю или туплю


NailS   (2002-01-15 16:01:00) [6]

Так же как и для кнопок, TButton класс один
Button1 ... и т.д. может быть много.

Создаются разные объекты одного класса.


eraser   (2002-01-15 15:56:00) [7]

торможу!! взял для примера Thread из Demos. мучаюсь но все равно не могу никак понять. Описываются разные потоки одного класса и код то разный в каждом потоке (вызывается процедура для каждого потока procedure Tthread1.Sort
procedure Tthread2.Sort)
а мне влом писать код 3 раза (его у меня ого-го)
как не пойму чтобы потоков было несколько а код один?


Digitman   (2002-01-15 15:34:00) [8]

разумеется !


eraser   (2002-01-15 15:32:00) [9]

эти результаты необходимо мне взять через какое либо объявленное свойство потока ??


Юрий Зотов   (2002-01-15 15:22:00) [10]

И посмотрите класс TThreadList - может пригодиться.


Digitman   (2002-01-15 15:19:00) [11]

соответственно - ответ : поскольку потоки одного класса, каждый из них может хранить рез-ты своей работы в своем экз-ре класса


eraser   (2002-01-15 15:04:00) [12]

исправьте меня если не прав:
1.создать ThreadObject
2. в Execute написать мой код
3. когда делаю Create потока то пишу нужные данные

соответственно вопрос поток то нужен не один как мне создать другой с этим же кодом и как получить результат из каждого потока


Владислав   (2002-01-15 14:55:00) [13]

> eraser (15.01.02 14:52)

Передавай эти данные потоку в конструкторе.


eraser   (2002-01-15 14:52:00) [14]

а если наоборот- могу ли я сделать так чтобы один и тот же код выполнялся в разных потоках без переписывания кода . у меня меняются только входные и выходные данные а способ обработки идет непрерывно и он одинаковый.


Владислав   (2002-01-15 14:41:00) [15]

Можно создать несколько экземпляров.


panov   (2002-01-15 14:40:00) [16]

В модуле описываешь несколько своих классов потомков TThread. Все можно делать в одном модуле.


Наверх

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