На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Соблюдайте общие правила форума
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Указывайте точные версии Delphi и используемых сетевых библиотек.

Не приветствуется поднятие старых тем. Если ваш вопрос перекликается со старой темой, то для вопроса лучше создать новую тему, а старую указать в первом сообщении с описанием взаимосвязи.

Внимание:
попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...

Полезные ссылки:
user posted image MSDN Library user posted image FAQ раздела user posted image Поиск по разделу user posted image Как правильно задавать вопросы


Выразить свое отношение к модераторам раздела можно здесь: user posted image Krid, user posted image Rouse_

Модераторы: Krid, Rouse_
  
> Асинхронный сокет и VCL
    Добрый день!
    Интересуюсь, как работает механизм событий в асинхронном клиенте\сервере в делфи. Насколько я понимаю, всё завязано на цикле обработки оконных сообщений, где в числе прочего проверяется, нет ли новых событий для нашего listener-а. То есть, если в главном потоке вызвать sleep(100000), то обработка эта подвиснет, и сокет ничего не услышит. Где можно почитать про это конкретней? И - можно ли схитрить, сделав вторую независимую форму (со своей очередью сообщений) и прикрепить сокеты к ней?
      Я могу предположить, опираясь на свой не богатый опыт, что если будет обработка сокета висеть в другом потоке, то все будет работать корректно, даже если основной поток уснет.
        Работает так же, как и любые оконные сообщения. В главном потоке крутится цикл выборки сообщений, если какой-то обработчик зависает - всё остальное также висит и ждет, пока он отработает.
        Хэндл сокета, как и любого окна, привязывается к тому потоку, в котором был создан. Соответственно если сокет создан во вспомогательном потоке - обработчик будет вызван в нем же. Но для этого этот поток должен реализовывать цикл выборки сообщений. Кстати, тонкий момент: создание сокета в TOtherThread.Create не даст никакого эффекта! Поток начинает выполняться только с момента входа в процедуру Execute
          Цитата Nagva27 @
          Добрый день!
          Интересуюсь, как работает механизм событий в асинхронном клиенте\сервере в делфи. Насколько я понимаю, всё завязано на цикле обработки оконных сообщений, где в числе прочего проверяется, нет ли новых событий для нашего listener-а. То есть, если в главном потоке вызвать sleep(100000), то обработка эта подвиснет, и сокет ничего не услышит. Где можно почитать про это конкретней? И - можно ли схитрить, сделав вторую независимую форму (со своей очередью сообщений) и прикрепить сокеты к ней?

          Это решение нельзя применять в коммерческом коде.
          1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0.0673 ]   [ 15 queries used ]   [ Generated: 23.08.26, 22:45 GMT ]