Este es un tema general, ¿Cómo funcionan los controladores de eventos?
Esto significa detrás de escena: lo que sucede cuando se crean.
Tengo una idea aproximada, pero me gustaría confirmarla.
event-programming
implementations
JHarley1
fuente
fuente
Respuestas:
En un nivel bajo, los controladores de eventos a menudo funcionan sondeando un dispositivo y esperando una interrupción de hardware. Esencialmente, un hilo de fondo se bloquea, mientras se espera que ocurra una interrupción de hardware. Cuando ocurre una interrupción, la función de encuesta detiene el bloqueo. La aplicación puede averiguar qué dispositivo manejó la interrupción y qué tipo de interrupción fue, y luego actuar en consecuencia (por ejemplo, invocando una función de controlador de eventos). Esto generalmente se hace en un hilo separado para que ocurra de forma asincrónica.
Por supuesto, la forma en que esto se implementa realmente varía considerablemente según el sistema operativo y el tipo de dispositivo / entrada. En los sistemas UNIX, una forma en que los controladores de eventos se implementan para cosas como sockets, puertos seriales o USB es a través de las llamadas del sistema select o poll . Uno o más descriptores de archivo / dispositivo (que están asociados con un dispositivo, como un zócalo de red, puerto serie / USB, etc.) se pasan a la
poll
llamada del sistema, que se pone a disposición del programador a través de una API C de bajo nivel. Cuando se produce un evento en uno de estos dispositivos (como, por ejemplo, algunos datos llegan a un puerto serie), la llamada del sistema de sondeo detiene el bloqueo y la aplicación puede determinar qué descriptor de dispositivo causó el evento y qué tipo de evento fue .En Windows, esto se maneja de manera diferente, pero los conceptos son básicamente los mismos.
fuente