Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.51 MB
Время: 0.027 c
15-1150386238
kaif
2006-06-15 19:43
2006.07.16
Футбол. Наемники. Кто как относится к этой практике?


11-1130302726
Vladimir Kladov
2005-10-26 08:58
2006.07.16
PRN и другие специальные "файлы" DOS


15-1150234030
Piter
2006-06-14 01:27
2006.07.16
Распечатка A1 на принтере A4


2-1151217749
Марина
2006-06-25 10:42
2006.07.16
Как закрасить в какой то свет вертикальную полосу прокрутки?


1-1149057436
kreyl
2006-05-31 10:37
2006.07.16
Как вызвать функцию хоста из dll?