![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как сделать объект управляющий другими потоком? [WinXP]
Kolan © (2006-06-01 12:57:00)Здравствуйте,
Ситуация примерно такая:
1. Есть N объектов(экземпляры разных класов).
2. У объектов, грубо говоря, есть одна функция иодно событие.
3. Ими нужно управлять. Для этого нужен менеджер. Как его сделать я себе представляю: Пришло сообшение свыше сделать то-то, он знает что для того, чтобы это сделать нужно вызвать функцию объекта 1. ... прошло время... возникло событие от объекта 5, значт надо сделать еще что -то. Вообщем все просто.
Вот я думаю почему бу не сделать это всё в потоке? ТОлько ни как не соображу как все это сделать..
Истоит ли вообще?
Сергей М. (2006-06-01 14:37:00) [1]Идея с доп.потоками хороша лишь в случае когда множество неких методов неких объектов должно выполняться параллельно, а не последовательно.
Kolan (2006-06-01 14:25:00) [2]
> Сергей М. © (01.06.06 14:20) [15]
Всё благодарю всех, от идеи отказался. :)
Сергей М. (2006-06-01 14:20:00) [3]
> есть изящное/нормальное решение?
Оно и на сообщениях будучи основанное будет "изящным/нормальным".
> Пример можно(словами ессно)?
В смысле какие еще механизмы (кроме сообщений) можно использовать для синхронизации ?
да пожалуйста- event, mutex, semaphore
Kolan (2006-06-01 14:18:00) [4]
> 1. таймер
Это не пойдет.
> 2. Выборка сообщений из очереди
Да наверно так и надо делать, но видимо не буду, тк оно того не стоит....
Благодарю за ответ :)
Пусик (2006-06-01 14:16:00) [5]
> Ну есть изящное/нормальное решение? Пример можно(словами
> ессно)?
1. таймер
2. Выборка сообщений из очереди
3. Ожидание синхронизирующего объекта(Mitex, Event и пр.), установка параметра в поле TThread.
и.т. д.
Kolan (2006-06-01 14:10:00) [6]
> "хоть отбавляй" <> "собшения наварачивать какие-нибудь"
Ну есть изящное/нормальное решение? Пример можно(словами ессно)?
Сергей М. (2006-06-01 14:07:00) [7]"хоть отбавляй" <> "собшения наварачивать какие-нибудь"
Kolan (2006-06-01 14:03:00) [8]Ясно, те собшения наварачивать какие-нибудь... Ну его не буду так делать...
Благодарю..
Сергей М. (2006-06-01 13:57:00) [9]
> Как сделать чтобы, если у экземпляра класса TA
> FEvent := DoSmth;
> при вызове FEvent DoSmth выполнилось бы в контексте доп.
> потока?
>
Вот так вот "в лоб" - никак.
Нужно каким-либо удобным способом известить доп.поток о том что он должен выполнить метод DoSmth()
Способов же таких хоть отбавляй.
Kolan (2006-06-01 13:50:00) [10]Так я думаю гл. потоку тоже будет чтем заняться, почему бы его не освободить от обработки событий...
Только ума не приложу как это сделать.
Допустим есть класс и событие
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;
при вызовеFEventDoSmthвыполнилось бы в контексте доп. потока?
Сергей М. (2006-06-01 13:41:00) [11]
> Я же наверно совета хочу....
Тогда уточняй, что тебя сподвигло на
> почему бу не сделать это всё в потоке
Kolan (2006-06-01 13:40:00) [12]
> Думать-то тебе ...
Вопрос на засыпку - зачем я сюда бы постил, если бы сам мог подумать и разобраться? Я же наверно совета хочу....
Сергей М. (2006-06-01 13:38:00) [13]
> Kolan © (01.06.06 13:35) [4]
Думать-то тебе ...
Kolan (2006-06-01 13:35:00) [14]
> Зачем ?
>
....см. [1]
> Истоит ли вообще?
Я как бы тоже думаю об этом. Думал подскажут, да лучьше сделай так так....
Или нет зачем это надо потому что....
Сергей М. (2006-06-01 13:27:00) [15]
> Итак понятно
Считай что я бестолочь)
Но не расчитывай, что в след.раз при подобных формулировках своих вопросов тебе не придется прочим " итакам" объяснять якобы очевидное (тебе).
Ну да ладныть ...
> почему бу не сделать это всё в потоке
Зачем ?
Kolan (2006-06-01 13:16:00) [16]В доп. потоке. Итак понятно. Зачем переспрашиват.....
Сергей М. (2006-06-01 13:03:00) [17]
> думаю почему бу не сделать это всё в потоке?
Это и так происходит в потоке, без твоей воли)