|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Indy10 TidTCPServer и многопоточность
Прошу помощь, необходимо создать TCPServer с одновременным коннектом до 100 компьютеров.
TMyContext = class(TIdServerContext) public procedure SendZapros; end; .... procedure TfrmMain.TCPServerExecute(AContext: TIdContext); begin TMyContext(AContext).SendZapros; end; В принципе работает, но в процедуре SendZapros у меня создается запрос в базу, на выполнение запроса поставил CriticalSection и если обращений много, то клиенты начинают подвисать. Что нужно сделать, что бы на каждое соединение создавался свой поток? |
#2
|
||||
|
||||
В инди по-моему и так на каждого клиента свой поток. А что подвисают они - ясное дело: CriticalSection временно "отрубает" все потоки, которые пытаются в нее влезть, если она занята. Вот и получается, что вся эта многопоточность сводится к последовательной обработке запросов.
jmp $ ; Happy End! The Cake Is A Lie. |
#3
|
|||
|
|||
Попробуй еще влепить на клиентскую форму компоненту tIdAntiFreeze, помогает с подвисаниями интерфейса при торможении работы сетевой части.
|