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

Вниз

Работа компонента внутри потока.   Найти похожие ветки 

 
Карелин Артем   (2003-08-22 11:19) [0]

Ситуация такая: хочется запустить компонент для организации FTP-сервера внутри потока. Какой цикл надо писать внутри Execute для того, чтобы компонент мог нормально ждать коннекта и чтобы поток при ожиданиии не загружал систему?


 
Reindeer Moss Eater   (2003-08-22 11:28) [1]

чтобы компонент мог нормально ждать коннекта и чтобы поток при ожиданиии не загружал систему?

Какой компонент?


 
Карелин Артем   (2003-08-22 11:34) [2]

Да любой! хоть TServerSocket, хоть TFtpServer.


 
Reindeer Moss Eater   (2003-08-22 11:58) [3]

Про любой ответа не дадут. Дадут про конкретный.


 
Карелин Артем   (2003-08-22 12:58) [4]

Не думаю, что ответ зивисит от типа компонента.
Значит так:
procedure MyThread.Execute;
begin
SomeComponent:=TSomeComponent.Create(...);
//конкретно FtpServer:=TFtpServer.Create(nil), заполнение всех свойств и активация
while not Terminated do
begin
// Что вставить сюда, чтобы компонент занимался своими делами
// Конкретно слушал порт и отвечал на запросы.
// Т.е. чтобы отрабатывались обработчики событий, которые оформлены как методы потока и чтобы при этом этот цикл не хавал слишком много времени проца.
end;
end;


 
Reindeer Moss Eater   (2003-08-22 13:17) [5]

В начале Execute создать экземпляр.
Установить параметры, и открыть на прослушивание.
Дальнейший код очень сильно зависит от конкретной реализации конкретного компонента.


 
Reindeer Moss Eater   (2003-08-22 13:20) [6]

Кроме всего прочего многие классы-инкапсуляторы FTP серверов имеют встроенную поддержку обработки соединений внутри вторичных потоков. И свой велосипед становится ненужен.


 
Карелин Артем   (2003-08-22 13:34) [7]

>>В начале Execute создать экземпляр.
>>Установить параметры, и открыть на прослушивание.
Уже есть
>>Дальнейший код очень сильно зависит от конкретной реализации конкретного компонента.
Код реализован так, что в обычной программе достаточно установить параметры и открыть. После этого идет обработка событий в обработчиках.
>>И свой велосипед становится ненужен.
Ну а если без флейма??

По идее в цикле должно быть что-то типа ProcessMessages...


 
Digitman   (2003-08-22 13:40) [8]


> Карелин Артем


> Не думаю, что ответ зивисит от типа компонента.


зависит. еще как зависит !
одни компоненты реализуют только синхронный транспорт, другие - только асинхронный, третьи - и тот и другой

асинхронный транспорт на момент вызова методов компонента будет блокировать выполнение того код.потока, который создает и работает с компонентом. цикл ожидания/выборки/обработки событий/сообщений в синхр.режиме не нужен.

асинхронный транспорт , напротив, блокировать код.поток не будет, но это потребует организации вышеуказанного цикла

ты должен определиться, какой будешь использовать компонент и в каком режиме


 
Карелин Артем   (2003-08-22 13:42) [9]

Который не блокирует поток.


 
Reindeer Moss Eater   (2003-08-22 15:11) [10]

Код реализован так, что в обычной программе достаточно установить параметры и открыть. После этого идет обработка событий в обработчиках.

А теперь спроси себя, зачем создание этого компонента помещать во вторичный поток?


 
Карелин Артем   (2003-08-22 15:18) [11]

Ну какой же ты редиска, да простят меня модераторы. Ну хочется мне спать в гамаке стоя на голове.



Страницы: 1 вся ветка

Форум: "Система";
Текущий архив: 2003.11.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.009 c
7-8694
opoloXAI
2003-08-22 15:37
2003.11.03
Read File from HDD побайтно => скорость очень низкая.


3-8293
Term
2003-10-13 17:26
2003.11.03
Как синхронизировать данные на клиентах...


3-8335
Geugenk
2003-10-11 16:19
2003.11.03
Table.eof


1-8384
antonioxxx
2003-10-21 16:27
2003.11.03
EAccessViolation Error!!! :(


1-8494
АСт
2003-10-23 22:07
2003.11.03
Компонент Memo





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский