Асинхронный вызов процедуры - Asynchronous procedure call

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

Таким образом, жизненный цикл вызова асинхронной процедуры состоит из двух этапов: пассивного этапа, когда он пассивно ожидает входных данных, и активного состояния, когда эти данные вычисляются так же, как и при обычном вызове процедуры.

Объект вызова асинхронной процедуры может быть повторно использован для последующих вызовов процедур с новыми данными, полученными позже. Это позволяет накапливать вычисленные выходные данные в этом объекте, как это обычно делается в объектах, запрограммированных с помощью Парадигма объектно-ориентированного программирования. Следует проявлять особую осторожность, чтобы избежать одновременного выполнения одного и того же вызова процедуры, чтобы вычисленные данные оставались в согласованном состоянии. Такая многоразовая асинхронная процедура называется Актер. Программирование с использованием Актеры описывается в Актерская модель и Программирование потока данных. Разница в том, что Актер в Актерская модель имеет ровно два порта: один порт для приема входных данных и другой (скрытый) порт для обеспечения последовательной обработки входных сообщений, в то время как Актер в Программирование потока данных может иметь много и переходит в службу выполнения, когда все входные данные содержат данные или разрешения.

Некоторые конкретные реализации

В Windows, асинхронный вызов процедуры (сокращенно APC) - это функция, которая выполняется асинхронно в контексте определенного потока.[1] APC могут быть созданы системой (APC режима ядра) или приложением (APC пользовательского режима).[1]

Рекомендации

  1. ^ а б «Асинхронные вызовы процедур (Windows)». Получено 1 марта 2017.