Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.08.27;
Скачать: CL | DM;

Вниз

TServerSocket, stNonBlocking несколько клиентов   Найти похожие ветки 

 
Юра   (2006-08-03 16:36) [0]

Возник такой вопрос, навеяно serko.

Есть TServerSocket, stNonBlocking.
По событию ServerSocket1ClientRead данные читаются из сокета в буфер, буфер для каждого подключенного клиента свой. Потом в этом же обработчике вызывается процедура, которая разбирает буфер и отсылает клиенту данные в зависимости от результатов разбора.

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
 Socket: TCustomWinSocket);
begin
//ID клиента = FindConnection(socket.handle);
//читаем в буфер клиента
//вызываем обработчик ProcessData(ID клиента);
end;

Вопрос такой: что будет, если процедура ProcessData(ID клиента) ЕЩЕ не завершена, а другой клиент пишет данные, т.е. вызывается ServerSocket1ClientRead?

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


 
Сергей М. ©   (2006-08-03 16:50) [1]

В однопоточной среде - пока тело текущего обработчика не завершило свое выполнение. и один последующий обработчик в том же потоке вызван не будет.

Это примитивно как 2 х 2.


 
Юра   (2006-08-03 17:04) [2]

В однопоточной среде - пока тело текущего обработчика не завершило свое выполнение. и один последующий обработчик в том же потоке вызван не будет.
----

Спасибо! Я так и думал, но иногда что-то находит и начинаешь сомневаться в аксиомах.


 
Сергей М. ©   (2006-08-03 17:13) [3]

Значит, знания не тверды.


 
Германн ©   (2006-08-03 17:14) [4]


> В однопоточной среде - пока тело текущего обработчика не
> завершило свое выполнение. и один последующий обработчик
> в том же потоке вызван не будет.

Хм хм.
А если в "текущем" вызвать Application.ProcessMessages?


 
Сергей М. ©   (2006-08-03 17:17) [5]


> Германн ©   (03.08.06 17:14) [4]


Ничего страшного не случится, если тела обработчиков спроектированы грамотно.



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

Текущий архив: 2006.08.27;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.046 c
15-1151261024
VirEx
2006-06-25 22:43
2006.08.27
JDMClient


1-1152863112
oleggar
2006-07-14 11:45
2006.08.27
decimalseparator


2-1154788948
Robin Hood
2006-08-05 18:42
2006.08.27
Прилипание форм


1-1152888285
Andrey Molchanov
2006-07-14 18:44
2006.08.27
Загрузить иконку определенной цветности


2-1155146075
merri
2006-08-09 21:54
2006.08.27
VarArrayCreate