Próbuję zrozumieć, czym jest pętla zdarzeń. Często wyjaśnia się, że w pętli zdarzeń robisz coś, dopóki nie zostaniesz powiadomiony o wystąpieniu zdarzenia. Następnie zajmujesz się zdarzeniem i kontynuujesz robienie tego, co robiłeś wcześniej.
Aby zmapować powyższą definicję na przykładzie. Mam serwer, który „nasłuchuje” w pętli zdarzeń, a gdy zostanie wykryte połączenie przez gniazdo, dane z niego zostaną odczytane i wyświetlone, po czym serwer wznowi / zacznie nasłuchiwać tak jak wcześniej.
Jednak to wydarzenie się dzieje i otrzymujemy powiadomienie „tak po prostu”, to dla mnie zbyt wiele. Możesz powiedzieć: „To nie jest tak po prostu”, musisz zarejestrować detektora zdarzeń ”. Ale czym jest detektor zdarzeń, ale funkcja, która z jakiegoś powodu nie powraca. Czy jest w swojej własnej pętli i czeka na powiadomienie o zdarzeniu? Czy detektor zdarzeń powinien również zarejestrować detektor zdarzeń? Gdzie to się kończy?
Wydarzenia to fajna abstrakcja do pracy, jednak tylko abstrakcja. Uważam, że w końcu odpytywanie jest nieuniknione. Być może nie robimy tego w naszym kodzie, ale robią to za nas niższe poziomy (implementacja języka programowania lub system operacyjny).
Zasadniczo sprowadza się do następującego pseudo kodu, który działa gdzieś wystarczająco nisko, więc nie powoduje zajętego oczekiwania:
while(True):
do stuff
check if event has happened (poll)
do other stuff
Takie jest moje rozumienie całego pomysłu i chciałbym usłyszeć, czy jest to poprawne. Otwarcie zgadzam się z tym, że cały pomysł jest zasadniczo błędny, w takim przypadku chciałbym uzyskać prawidłowe wyjaśnienie.
EventSource
robi, jeśli nie odpytuje wejścia klawiatury?