Я пытаюсь понять, что такое цикл событий. Часто объяснение заключается в том, что в цикле событий вы что-то делаете, пока не получите уведомление о том, что произошло событие. Затем вы обрабатываете событие и продолжаете делать то, что делали раньше.
Для сопоставления приведенного выше определения с примером. У меня есть сервер, который «слушает» в цикле событий, и при обнаружении соединения с сокетом данные с него считываются и отображаются, после чего сервер возобновляет / начинает прослушивание, как и раньше.
Тем не менее, это событие происходит, и мы получаем уведомление «просто так», и мне многое предстоит сделать. Вы можете сказать: «Это не« просто так », вы должны зарегистрировать прослушиватель событий». Но что такое прослушиватель событий, а функция, которая по какой-то причине не возвращается. Это в своем собственном цикле, ожидая уведомления, когда происходит событие? Должен ли прослушиватель событий также регистрировать прослушиватель событий? Где это заканчивается?
События - хорошая абстракция для работы, но только абстракция. Я считаю, что в конце концов, опрос неизбежен. Возможно, мы не делаем это в нашем коде, но более низкие уровни (реализация языка программирования или ОС) делают это для нас.
Это в основном сводится к следующему псевдокоду, который выполняется где-то достаточно низко, поэтому это не приводит к занятому ожиданию:
while(True):
do stuff
check if event has happened (poll)
do other stuff
Это мое понимание всей идеи, и я хотел бы услышать, если это правильно. Я открыт в том, чтобы признать, что вся идея в корне неверна, и в этом случае я хотел бы получить правильное объяснение.
EventSource
делать, если не опрашивать ввод с клавиатуры?