Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2006.07.16;
Скачать: [xml.tar.bz2];

Вниз

Как сделать объект управляющий другими потоком?   Найти похожие ветки 

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.008 c
8-1138709076
RBi
2006-01-31 15:04
2006.07.16
Где найти платные/бесплатные библиотеки для работы с PSD?


1-1149320040
TPA
2006-06-03 11:34
2006.07.16
Класс в DLL


15-1150454113
DVM
2006-06-16 14:35
2006.07.16
Нашел одну фишку в TSpeedButton


3-1147454543
skichyp
2006-05-12 21:22
2006.07.16
не могу законнектиться с локального


5-1135590028
Booozooo
2005-12-26 12:40
2006.07.16
Странная ошибка.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский