digital-garden/knowledge/dev/Event Loop.md

2.0 KiB
Raw Blame History

aliases tags date zero-link parents linked
зрелость/🌱
2023-10-26
../../garden/ru/meta/zero/00 Разработка
Реактивная разработка

По сути, Event Loop - это реализация шаблона Reactor. Является неблокирующим потоком ввода-вывода, который работает непрерывно. Его основная задача — проверка новых событий. И как только событие пришло перенаправлять его тому, кто в данный момент может его обработать. Иногда их может быть несколько для увеличения производительности. 

Выше приведён абстрактный дизайн цикла событий, который представляет идеи реактивного асинхронного программирования:

  • Цикл событий выполняется непрерывно в одном потоке, хотя у нас может быть столько циклов событий, сколько доступно ядер.
  • Цикл событий последовательно обрабатывает события из очереди событий и возвращается сразу после регистрации обратного вызова в платформе.
  • Платформа может инициировать завершение операции, такой как вызов базы данных или вызов внешней службы.
  • Цикл событий может запускать обратный вызов при уведомлении о завершении операции и отправлять результат обратно исходному вызывающему.