![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
В каком потоке выполняются обработчики событий TClientSocket? [D6]
AkaSaint © (2004-04-01 16:40:00)Я обнаружил, что после успешного выполнения ClientSocket.Open
число потоков приложения увеличивается на 2. У меня 3 вопроса:
1) Что это за 2 потока? Кто непосредственно их создает
(TClientSocket? Библиотека WinSock? Еще кто-то?)
2) Что это за потоки, каковы их функции?
3) В контексте какого потока вызываются обработчики событий
OnRead, OnWrite этого компонента - в контексте главного VCL-потока или же одного из этих дополнительных потоков? Иными словами, могу ли я быть уверен, что если в обработчике события OnShow некоторой формы:
...
ClientSocket.SendStream(...);//Запрос к серверу приложений
...//(*)Выполнение более или менее длительной операции
то приход ответа от сервера приложений не прервет выполнение (*)?
Буду благодарен за ответы или ссылки на материалы в Сети или в реале.
AkaSaint (2004-04-02 22:52:00) [1]Серверная часть - отдельное приложение.
Digitman (2004-04-02 08:10:00) [2]а серверная часть в том же приложении, где и клиентская часть ? или в отдельном ?
AkaSaint (2004-04-01 23:51:00) [3]Спасибо, основной вопрос я выяснил. Только я написал, что число потоков увеличиваетсяна 2, т.е. всего их 3. Поэтому хотелось бы узнать, что это еще за один поток. И зачем эти 2 новых потока нужны.
Digitman (2004-04-01 16:55:00) [4]обработчики всех без исключений событий компонента будут вызываться компонентом именно в том код.потоке, который выполнил метод компонента Open() (или Active := True)
Digitman (2004-04-01 16:53:00) [5]
> 1) Что это за 2 потока? Кто непосредственно их создает
1-й - основной код.поток процесса твоего приложения
2-й создает ядро
> 3) В контексте какого потока вызываются обработчики событий
>
в контексте того потока, который выполнил ClientSocket.Open