Схема реактора объяснена в Википедии , и это слишком абстрактно. Можете ли вы описать эту закономерность более конкретно? В идеале с фрагментами кода или высокоуровневыми диаграммами классов, описывающими некоторые применения паттерна реактора.
Схема реактора объяснена в Википедии , и это слишком абстрактно. Можете ли вы описать эту закономерность более конкретно? В идеале с фрагментами кода или высокоуровневыми диаграммами классов, описывающими некоторые применения паттерна реактора.
Ответы:
Вы можете проверить исходный документ с его описанием http://www.dre.vanderbilt.edu/~schmidt/PDF/reactor-siemens.pdf
Шаблон проектирования Reactor обрабатывает запросы на обслуживание, которые одновременно доставляются приложению одним или несколькими клиентами. Каждая служба в приложении может состоять из нескольких методов и представлена отдельным обработчиком событий, который отвечает за отправку запросов, связанных с конкретной службой. Отправка обработчиков событий выполняется диспетчером инициирования, который управляет зарегистрированными обработчиками событий. Демультиплексирование сервисных запросов выполняется демультиплексором синхронных событий.
Реактор позволяет эффективно обрабатывать несколько задач, которые блокируются (скажем, из-за ввода-вывода), используя один поток. Реактор управляет пулом обработчиков и запускает цикл событий. Когда его вызывают для выполнения задачи, он связывает его с новым или свободным обработчиком, делая его активным. Цикл событий (1) находит все активные и разблокированные обработчики (или делегирует это реализации диспетчера) (2) последовательно выполняет каждый из этих найденных обработчиков, пока они не завершатся или не достигнут точки, где они блокируются. Завершенные обработчики становятся неактивными и свободными для повторного использования, тогда как заблокированные активные обработчики уступают место, позволяя продолжить цикл событий. (3) Повторяется с шага (1).