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

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

Как сделать объект управляющий другими потоком? [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;
при вызове FEvent DoSmthвыполнилось бы в контексте доп. потока?


Сергей М.   (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]


> думаю почему бу не сделать это всё в потоке?


Это и так происходит в потоке, без твоей воли)


Наверх

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