![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Здравствуйте.
Подскажите пожалуйста, как сделать синхронизацию VCL в Indy10 на сервере(IdTCPServer)? Принимаю и вывожу данные от клиента на сервере так: Код:
|
#2
|
|||
|
|||
![]() Серверные компоненты обрабатывают приходящие данные в потоке. Соответсвенно, нужно сделать свой метод, из которого обращаться к VCL (читай, главному потоку приложения) и вызывать его через Synchronize.
|
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
Vertex (13.04.2015)
|
#3
|
|||
|
|||
![]() Спасибо, а примерчик если не трудно приведите пожалуйста, в гугле что-то не получается найти ничего внятного по этому вопросу.
В Indy10 идёт TIdContext, в нём нету метода Synchronize. Последний раз редактировалось Vertex, 13.04.2015 в 07:49. |
#4
|
|||
|
|||
![]() Лень писать пример.
Помиотри тут примеры и идеи: http://codeverge.com/embarcadero.del...a-form/1069509 http://codeverge.com/embarcadero.del...l-form/1062438 http://embarcadero.newsgroups.archiv...103155640.html |
#5
|
|||
|
|||
![]() Посмотрел, нормальных примеров не нашел. Понял что надо использовать TIdSync или TIdNotify, вроде как TIdNotify получше.
Если кто-нибудь приведёт пример, буду очень признателен. Вопрос остаётся пока не решенным. Последний раз редактировалось Vertex, 13.04.2015 в 13:48. |
#6
|
||||||
|
||||||
![]() Вот есть такой код:
Клиент: Код:
Сервер_1 - (через TIdSync) : Код:
Сервер_2 - (через TidNotify) : Код:
С клиентов к серверу идут каждые 100мс сообщения. Что первый вариант сервера, что второй их принимает и выводит в Мемо1. Но если подключить 200 клиентов, то сервер в обоих вариантах - зависает. Так же идёт утечка памяти в обоих вариантах серверов. Подправьте пожалуйста на этих примерах, чтобы сервер не зависал при множестве клиентов, и устранить утечку памяти. Последний раз редактировалось Vertex, 13.04.2015 в 16:48. |
#7
|
|||
|
|||
![]() Уважаемы профессионалы!
Вы бы хоть сказали, правильно ли сделана синхронизация на сервере_1 и на сервере_2 ? А то все пробежались мимо, и на этом нерешенный вопрос повис в воздухе. ![]() |
#8
|
|||
|
|||
![]() Все тормоза и зависание, а отсюда и рост памяти были из-за грёбаного грузного компонента Мемо, ни один стандартный компонент не подошел для вывода разноцветных строк, даже при рисовании на канве зависал сервер при 500 клиентах.
Выручило динамическое создание множества Label и из них сделал лист, даже на 700 клиентах ничего не зависает и память не растёт. Сервер через TIdSync. Последний раз редактировалось Vertex, 18.04.2015 в 23:18. |
#9
|
|||
|
|||
![]() Не, нет у тебя там ничего, что тормозило бы. Либо ты не весь код показал. Проблема может быть только одна - отрисовка. Все-таки Memo - оконный компонент. И разные потоки могли тормозиться из-за синхронизации отрисовки.
|