Когда некоторая программная Компонента имеет один выполняемый Поток, то только Код одного программного Объекта может выполняться в текущий момент времени. Возможности серверов Автоматизации Component Object Model (COM) позволяют обрабатывать серию поступающих на выполнение Запросов. Тем самым, поступающие Запросы к Серверу (.dll) выстраиваются в Очередь, и последовательно Обрабатываются до тех пор, пока указанная очередь не заканчивается.

В Много-поточной Операционной Среде, где системный процесс Serialization(последовательного упорядочивания) защищает Одно-поточные Объекты от перекрывающихся (накладываемых) Запросов внешнего Клиента. Тем самым, программный Код метода будет находиться в ожидании до тех пор, пока выполняются предыдущие Запосы Клмента. Наложение (параллельное выполнение) Запросов может породить внутренние Ошибки обработки Данных, если данный объект разработан без учета Реентерабельного (повторного) использования.

Тем самым, процесс Сериализации (Serialization) является особо Важной характеристикой серверов Автоматизации. Однако, Сериализация одно-поточных Компонент приводит иногда к Блокировке запросов внешнего Клиента. Например, предположим, что вы имеете объект Widget, который обладает двумя Методами: Spin и Flip.

  • Метод Spin выполняется несколько секунд в течение Получаса.

  • Метод Flip выполняется почти моментально.

Поскольку 32-х разрядное Приложение является много-Задачным, то второе Приложение, которое запрашивает у вашего Сервера выполнения короткого Метода Flip будет находиться в Ожидании до тех пор, пока для первого Приложения не завершится длинный метод Spin.

В том случае, когда Короткие Операции часто блокируются Длинными Операциями, то значительно падает Производительность Сервера и растет недовольство Пользователей. Компоненты (серверы), имеющие описанные характеристики часто называют "Плохо- Расширяемыми" (масштабируемыми). То есть, они работают неудовлетворительно в условиях последовательности поступающих Запросов смешанной природы  (длинных и коротких).

Система Visual FoxPro обеспечивает создание двух видов внешних Компонент, которые масштабируют адресное пространство и позволяют избегать Блокировку Запросов, это:  — SingleUse (Однопользовательские) и MultiThreaded (много-поточные) Объекты. Дополнительную информацию смотрите в разделе: Управление Блокировкой Запросов.

Expand imageСм. также