Асинхронность (компьютерное программирование)

Техника компьютерного программирования

Асинхронность в программировании компьютеров относится к возникновению событий, независимых от основного потока программы , и способам обработки таких событий. Это могут быть «внешние» события, такие как поступление сигналов или действия, инициированные программой, которые происходят одновременно с выполнением программы, без зависания программы в ожидании результатов. [1] Асинхронный ввод/вывод является примером последнего случая асинхронности и позволяет программам выдавать команды устройствам хранения или сетевым устройствам, которые обслуживают эти запросы, в то время как процессор продолжает выполнять программу. Это обеспечивает определенную степень параллелизма . [1]

Обычный способ борьбы с асинхронностью в программном интерфейсе — предоставить подпрограммы , которые возвращают future или promise , представляющие текущую операцию, и синхронизирующую операцию, которая блокирует , пока future или promise не будет завершен. Некоторые языки программирования, такие как Cilk , имеют специальный синтаксис для выражения асинхронного вызова процедуры. [2]

Примеры асинхронности включают в себя следующее:

  • Асинхронный вызов процедур , метод одновременного выполнения процедур, облегченная альтернатива потокам .
  • Ajax — это набор клиентских веб-технологий, используемых клиентом для создания асинхронных веб-приложений ввода-вывода .
  • Асинхронная диспетчеризация методов (AMD), метод передачи данных, используемый, когда серверной стороне необходимо обрабатывать большое количество длительных клиентских запросов. [3] При использовании синхронной диспетчеризации методов (SMD) этот сценарий может перевести сервер в недоступное занятое состояние, что приведет к ответу об ошибке соединения, вызванному истечением времени ожидания запроса на сетевое соединение . Обслуживание клиентского запроса немедленно направляется доступному потоку из пула потоков , и клиент переводится в состояние блокировки. После завершения задачи сервер уведомляется обратным вызовом. Сервер разблокирует клиента и передает ответ обратно клиенту. В случае нехватки потоков клиенты блокируются, ожидая, пока потоки станут доступны.

Смотрите также

Ссылки

  1. ^ ab Davies, Alex (2012). Async в C# 5.0. O'Reilly. стр.  1– 2. ISBN 9781449337124.
  2. ^ МакКул, Майкл; Рейндерс, Джеймс; Робинсон, Арч (2013). Структурированное параллельное программирование: шаблоны для эффективных вычислений . Elsevier. стр. 30.
  3. ^ Использование ICE AMD.


Взято с "https://en.wikipedia.org/w/index.php?title=Асинхронное_(компьютерное_программирование)&oldid=1263086228"