Являются ли опросы и программирование на основе событий разными словами для одной и той же техники?

Я изучал прерывания по сравнению с циклическим опросом и узнал о преимуществах прерываний, которые не должны ждать опроса. Опрос казался мне просто программированием, управляемым событиями, или, по крайней мере, похожим на слушателя, и то, что делает опрос, на самом деле очень похоже на прослушивание ввода или вывода. Вы согласны или я неправильно понял какое-либо принципиальное различие между опросом (циклическое прослушивание) и программированием, управляемым событиями (также прослушиванием с так называемыми слушателями)?

3 ответа

Решение

Нет, наоборот, программирование на основе прерываний - это почти то же самое, что программирование на основе событий на аппаратном уровне. И код, управляемый прерываниями, и код, управляемый событиями, ожидают события перед запуском кода, в то время как опрос будет пытаться запросить событие, существует ли оно на самом деле.

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

Вы можете сказать, что программирование на основе прерываний и событий - это дисциплинированный способ опроса, который имеет много преимуществ по сравнению с самим опросом.

Опрос и обработка прерываний - два способа узнать о событиях. Ни то, ни другое не противоречит программированию на основе событий, которое строит вашу программу на основе обработки входящих событий.

Оба ответа верны и касаются исходного вопроса. Я пытаюсь добавить несколько моментов/соображений по управляемому событиями/опросу, который обычно используется на более высоком уровне, из контейнеров приложений.

Если мы предположим, что у нас есть таблица, в которой записаны состояния некоторых компонентов, и на основе состояния необходимо выполнить какое-то действие; это вполне может быть разработано как система обработки событий на основе Q или система опроса на основе потоков.

В системе опроса перед завершением/отключением системы/контейнера поток опроса найдет изменения в следующем цикле и воздействует на них.

В случае системы, основанной на событиях, если контейнер завершится до того, как событие сможет быть обработано, это приведет к потере события. Однако, сказав, что есть очереди транзакций, которые доступны, и возможность предоставляется из коробки; реализация транзакции, вообще процесс нетривиальный.

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

Другие вопросы по тегам