![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как треду перед запуском передать/установить параметры/флаги?
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
создать свой конструктор с параметрами, которые необходимы.