Статьи Королевства Дельфи


Проблемы взаимодействия клиента и сервера


При синхронном взаимодействии клиент вызывает процедуру/функцию/метод сервера, и когда последний возвращает управление, задача уже выполнена. А что, если выполнение длится много дольше, чем клиент может ждать? Это приводит к асинхронной модели взаимодействия клиента и сервера. Клиент дает задание серверу и продолжает заниматься своим делом. Сервер по окончанию работы должен известить клиента каким-либо образом.

Самый древний известный способ - выставление программного флага - является и самым плохим решением, поскольку заставляет клиента периодически проверять этот флаг. Как бы сделать так, чтобы клиент получал извещения самым естественным для него способом и не тратил процессорное время на тупое ожидание и даже на проверку?

Здесь следует уточнить, что описываемые проблемы наиболее актуальны при взаимодействии клиента и сервера, выполняющихся в разных потоках или в разных процессах. Современная наука предоставляет следующий выбор средств нотификации, не привязанных к высокоуровневым технологиям:

  • объекты ядра ОС для синхронизации потоков (события,семафоры,мьютексы)
  • сообщение потоку
  • сообщение окну
  • вызов процедуры клиента




Начало  Назад  Вперед