Текущий архив: 2006.07.16;
Скачать: CL | DM;
ВнизКак сделать объект управляющий другими потоком? Найти похожие ветки
← →
Kolan © (2006-06-01 12:57) [0]Здравствуйте,
Ситуация примерно такая:
1. Есть N объектов(экземпляры разных класов).
2. У объектов, грубо говоря, есть одна функция иодно событие.
3. Ими нужно управлять. Для этого нужен менеджер. Как его сделать я себе представляю: Пришло сообшение свыше сделать то-то, он знает что для того, чтобы это сделать нужно вызвать функцию объекта 1. ... прошло время... возникло событие от объекта 5, значт надо сделать еще что -то. Вообщем все просто.
Вот я думаю почему бу не сделать это всё в потоке? ТОлько ни как не соображу как все это сделать..
Истоит ли вообще?
← →
Сергей М. © (2006-06-01 13:03) [1]
> думаю почему бу не сделать это всё в потоке?
Это и так происходит в потоке, без твоей воли)
← →
Kolan © (2006-06-01 13:16) [2]В доп. потоке. Итак понятно. Зачем переспрашиват.....
← →
Сергей М. © (2006-06-01 13:27) [3]
> Итак понятно
Считай что я бестолочь)
Но не расчитывай, что в след.раз при подобных формулировках своих вопросов тебе не придется прочим "итакам" объяснять якобы очевидное (тебе).
Ну да ладныть ...
> почему бу не сделать это всё в потоке
Зачем ?
← →
Kolan © (2006-06-01 13:35) [4]
> Зачем ?
>
....см. [1]
> Истоит ли вообще?
Я как бы тоже думаю об этом. Думал подскажут, да лучьше сделай так так....
Или нет зачем это надо потому что....
← →
Сергей М. © (2006-06-01 13:38) [5]
> Kolan © (01.06.06 13:35) [4]
Думать-то тебе ...
← →
Kolan © (2006-06-01 13:40) [6]
> Думать-то тебе ...
Вопрос на засыпку - зачем я сюда бы постил, если бы сам мог подумать и разобраться? Я же наверно совета хочу....
← →
Сергей М. © (2006-06-01 13:41) [7]
> Я же наверно совета хочу....
Тогда уточняй, что тебя сподвигло на
> почему бу не сделать это всё в потоке
← →
Kolan © (2006-06-01 13:50) [8]Так я думаю гл. потоку тоже будет чтем заняться, почему бы его не освободить от обработки событий...
Только ума не приложу как это сделать.
Допустим есть класс и событиеTEvent = procedure (Sender: TObject) of object;
TA = class
FEvent = TEvent
end;
И классTB = class
procedure DoSmth(Sender: TObject);
end;
Если все в гл потоке, то понятно. Вызвали событие - сделали то, что вDoSmth
.
А как это будет выглядеть для доп. потока?
ПустьTC = class(TThread)
protected
procedure DoSmth(Sender: TObject);
procedure Execute; override;
end;
В голове не укладывается..
Как сделать чтобы, если у экземпляра классаTA
FEvent := DoSmth;
при вызовеFEvent
DoSmth
выполнилось бы в контексте доп. потока?
← →
Сергей М. © (2006-06-01 13:57) [9]
> Как сделать чтобы, если у экземпляра класса TA
> FEvent := DoSmth;
> при вызове FEvent DoSmth выполнилось бы в контексте доп.
> потока?
>
Вот так вот "в лоб" - никак.
Нужно каким-либо удобным способом известить доп.поток о том что он должен выполнить метод DoSmth()
Способов же таких хоть отбавляй.
← →
Kolan © (2006-06-01 14:03) [10]Ясно, те собшения наварачивать какие-нибудь... Ну его не буду так делать...
Благодарю..
← →
Сергей М. © (2006-06-01 14:07) [11]"хоть отбавляй" <> "собшения наварачивать какие-нибудь"
← →
Kolan © (2006-06-01 14:10) [12]
> "хоть отбавляй" <> "собшения наварачивать какие-нибудь"
Ну есть изящное/нормальное решение? Пример можно(словами ессно)?
← →
Пусик © (2006-06-01 14:16) [13]
> Ну есть изящное/нормальное решение? Пример можно(словами
> ессно)?
1. таймер
2. Выборка сообщений из очереди
3. Ожидание синхронизирующего объекта(Mitex, Event и пр.), установка параметра в поле TThread.
и.т. д.
← →
Kolan © (2006-06-01 14:18) [14]
> 1. таймер
Это не пойдет.
> 2. Выборка сообщений из очереди
Да наверно так и надо делать, но видимо не буду, тк оно того не стоит....
Благодарю за ответ :)
← →
Сергей М. © (2006-06-01 14:20) [15]
> есть изящное/нормальное решение?
Оно и на сообщениях будучи основанное будет "изящным/нормальным".
> Пример можно(словами ессно)?
В смысле какие еще механизмы (кроме сообщений) можно использовать для синхронизации ?
да пожалуйста- event, mutex, semaphore
← →
Kolan © (2006-06-01 14:25) [16]
> Сергей М. © (01.06.06 14:20) [15]
Всё благодарю всех, от идеи отказался. :)
← →
Сергей М. © (2006-06-01 14:37) [17]Идея с доп.потоками хороша лишь в случае когда множество неких методов неких объектов должно выполняться параллельно, а не последовательно.
Страницы: 1 вся ветка
Текущий архив: 2006.07.16;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.009 c