Jump to content

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

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

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

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

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

См. также

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


Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 16ca9089445b7765aa11f3216974f702__1713166440
URL1:https://arc.ask3.ru/arc/aa/16/02/16ca9089445b7765aa11f3216974f702.html
Заголовок, (Title) документа по адресу, URL1:
Asynchrony (computer programming) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)