To jest ogólny temat: Jak działają moduły obsługi zdarzeń?
Oznacza to za kulisami - co dzieje się, gdy są tworzone.
Mam przybliżony pomysł - ale chciałbym, aby został potwierdzony.
event-programming
implementations
JHarley1
źródło
źródło
Odpowiedzi:
Na niskim poziomie procedury obsługi zdarzeń często działają poprzez odpytywanie urządzenia i oczekiwanie na przerwanie sprzętowe. Zasadniczo wątek w tle blokuje się podczas oczekiwania na wystąpienie przerwania sprzętowego. Kiedy nastąpi przerwanie, funkcja odpytywania przestaje blokować. Aplikacja może następnie dowiedzieć się, który uchwyt urządzenia spowodował przerwanie i jaki to był rodzaj przerwania, a następnie odpowiednio zareagować (np. Wywołując funkcję modułu obsługi zdarzeń). Zwykle odbywa się to w osobnym wątku, tak aby odbywało się asynchronicznie.
Oczywiście sposób, w jaki jest to realizowane, różni się znacznie w zależności od systemu operacyjnego i rodzaju urządzenia / wejścia. W systemach UNIX jednym ze sposobów implementacji procedur obsługi zdarzeń dla gniazd, portów szeregowych lub USB jest wybranie lub odpytanie wywołań systemowych. Jeden lub więcej deskryptorów plików / urządzeń (które są powiązane z urządzeniem, takich jak gniazdo sieciowe, port szeregowy / USB itp.) Są przekazywane do
poll
wywołania systemowego - które jest udostępniane programiście przez niskopoziomowy interfejs API języka C. Kiedy zdarzenie występuje na jednym z tych urządzeń (np. Niektóre dane docierają do portu szeregowego), wywołanie systemowe odpytywania przestaje blokować, a aplikacja może następnie określić, który deskryptor urządzenia spowodował zdarzenie i jaki to był typ zdarzenia .W systemie Windows jest to obsługiwane inaczej, ale pojęcia są w zasadzie takie same.
źródło