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

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

Как треду перед запуском передать/установить параметры/флаги?


Страницы:   1 2 3

Olorin ©   (2002-08-15 11:44:00) 

Вот и вопрос собственно!


Olorin   (2002-08-15 15:26:00) [41]

>Ученик ©
Именно как использовать threadvar как флаг остановки потоков... не всех сразу а только того что нужно...


Ученик   (2002-08-15 15:01:00) [42]

>Olorin © (15.08.02 14:52)
Какая часть реализации вызывает вопросы ?


Olorin   (2002-08-15 14:52:00) [43]

>Ученик ©
Эхх пока они прийдут топ улетит в дальние дали :o(


Ученик   (2002-08-15 14:39:00) [44]

>Olorin © (15.08.02 14:24)
Подробнее прийдется мастеров ждать :)))


Olorin   (2002-08-15 14:24:00) [45]

А подробнее сильно много писать? :o)


Ученик   (2002-08-15 14:16:00) [46]

Флаг можно организовать как список тредов (глобальная переменная), которым нужно выполнить задание, треды проверяют наличие себя в списке


Olorin   (2002-08-15 13:53:00) [47]

>Ученик ©
Хм не понял как оно пашет:

implementation

threadvar
ThreadObject: TClientSocketThread;

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


Ученик   (2002-08-15 13:45:00) [48]

Source\Internet\Sockets.pas
ThreadObject: TClientSocketThread;


Olorin   (2002-08-15 13:39:00) [49]

Хм тоесть я ее могу перед стартом в задаче иннициализировать и потом проверять ее значение при работе из потока?
Чего то я не допер... может пример... на пару строк? :o)


Ученик   (2002-08-15 13:02:00) [50]

>Olorin © (15.08.02 13:00)
Для каждого треда она своя


Olorin   (2002-08-15 13:00:00) [51]

>Ученик ©
Хм и чем отличается применение threadvar от просто глобальной??
>Skier ©
Угу флаг нужен различный для каждого треда...


Ученик   (2002-08-15 12:50:00) [52]

>Olorin © (15.08.02 12:37)
Есть еще threadvar


Skier   (2002-08-15 12:40:00) [53]

>Olorin
Если флаг для каждого потока должен быть свой, то да...


Olorin   (2002-08-15 12:37:00) [54]

Ок огромное спасибо пока разобирался с примером из дельфи вы тут разжевали... уряяя..... а еще вопрос... если у меня может запускаться МНОГО потоков неужели на каждый создавать переменную флаг?


Skier   (2002-08-15 12:30:00) [55]

>Ученик
Я тут подумал - если создавать Thread с параметром
CreateSuspended = False, то твоя поправка оченьсущественна...Приступ невнимательности... :)


Skier   (2002-08-15 12:27:00) [56]

>Ученик
Валяй...:)))


Ученик   (2002-08-15 12:26:00) [57]

>Skier © (15.08.02 12:23)
Извиняюсь, чуть поправлю

constructor TbtnMouseStart.CreateWithParams(CreateSuspended: Boolean; const AYourParam1: Integer; const AYourParam2: String);
begin
FYourParam1 := AYourParam1;
FYourParam2 := AYourParam2;
inherited Create(CreateSuspended);
end;


Skier   (2002-08-15 12:23:00) [58]

>Olorin


TbtnMouseStart = class(TThread)
private
FYourParam1 : Integer;
FYourParam2 : String;
protected
procedure Execute; override;
public
constructor CreateWithParams(CreateSuspended: Boolean;
const AYourParam1 : Integer; const AYourParam2 : String);
end; //TbtnMouseStart


{ TbtnMouseStart }

constructor TbtnMouseStart.CreateWithParams(CreateSuspended: Boolean; const AYourParam1: Integer; const AYourParam2: String);
begin
inherited Create(CreateSuspended);
FYourParam1 := AYourParam1;
FYourParam2 := AYourParam2;
end;

procedure TbtnMouseStart.Execute;
begin
inherited Execute;
end;


Создание :


var
MouseStart1: TbtnMouseStart;
MouseStart2: TbtnMouseStart;
begin
MouseStart1 := TbtnMouseStart.CreateWithParams(False, 0, "This
is my own parameter");
MouseStart2 := TbtnMouseStart.CreateWithParams(False, 0, "This
is my own parameter too");
//............
end;


Olorin   (2002-08-15 12:15:00) [59]

Скиер можно поподробнее.... скажем я создаю тип:

type
TbtnMouseStart = class(TThread)
private
{ Private declarations }
protected
procedure Execute; override;
end;

.........................

var
MouseStart1: TbtnMouseStart;
MouseStart2: TbtnMouseStart;


Как каждому потоку передать свои параметры?


Skier   (2002-08-15 11:53:00) [60]

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


Страницы:   1 2 3

Наверх

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