Terminologie
événement : un type de chose qui peut arriver.
déclenchement d'événement : occurrence spécifique d'un événement; un événement qui se passe.
écouteur d'événement : Quelque chose qui recherche les déclenchements d'événements.
gestionnaire d'événements : quelque chose qui se produit lorsqu'un écouteur d'événements détecte le déclenchement d'un événement.
event subscriber : une réponse que le gestionnaire d'événements est censé appeler.
Ces définitions ne dépendent pas de l'implémentation, elles peuvent donc être implémentées de différentes manières.
Certains de ces termes sont généralement confondus avec des synonymes car les utilisateurs ne sont souvent pas obligés de les distinguer.
Scénarios communs
Programmation d'événements logiques.
L' événement est quand une méthode est appelée.
Un événement déclenchant est un appel particulier à cette méthode.
L' écouteur d'événements est un point d'ancrage dans la méthode d'événement appelée à chaque déclenchement d'événement qui appelle le gestionnaire d'événements.
Le gestionnaire d'événements appelle une collection d'abonnés aux événements.
L' abonné (s) de l'événement effectue (nt) toute action que le système veut dire en réponse à l'occurrence de l'événement.
Événements externes.
L' événement est un événement externe qui peut être déduit d'observables.
Un événement se déclenche lorsque cet événement externe peut être reconnu comme ayant eu lieu.
L' auditeur d'événement détecte en quelque sorte les déclenchements d'événement, souvent en interrogeant le ou les observables, puis appelle le gestionnaire d'événements lors de la détection d'un déclenchement d'événement.
Le gestionnaire d'événements appelle une collection d'abonnés aux événements.
L' abonné (s) de l'événement effectue (nt) toute action que le système veut dire en réponse à l'occurrence de l'événement.
Interrogation ou insertion de crochets dans le mécanisme de déclenchement de l'événement
Les autres soulignent que les sondages ne sont souvent pas nécessaires. En effet, les écouteurs d'événements peuvent être implémentés en faisant en sorte que les déclenchements d'événements appellent automatiquement le gestionnaire d'événements, ce qui est souvent le moyen le plus efficace d'implémenter des tâches lorsque les événements sont des occurrences au niveau du système.
Par analogie, vous n'avez pas besoin de vérifier votre boîte aux lettres chaque jour si le postier frappe à votre porte et vous le remet directement.
Cependant, les écouteurs d'événement peuvent également fonctionner par sondage. L'interrogation ne nécessite pas nécessairement la vérification d'une valeur spécifique ou d'un autre observable; ça peut être plus complexe. Mais, dans l’ensemble, le point d’interrogation consiste à déduire que certains événements se sont produits de manière à pouvoir y répondre.
Par analogie, vous devez vérifier votre boîte aux lettres tous les jours lorsque le postier y dépose simplement du courrier. Vous n’auriez pas à faire ce travail de scrutin si vous pouviez demander au postier de frapper à votre porte, mais ce n’est souvent pas une possibilité.
Chaînage des événements
Dans de nombreux langages de programmation, vous pouvez écrire un événement qui vient d'être appelé lorsqu'une touche du clavier est enfoncée ou à un moment donné. Bien que ces événements soient externes, vous n'avez pas besoin de les interroger. Pourquoi?
C'est parce que le système d'exploitation vous interroge. Par exemple, Windows recherche des éléments tels que les changements d'état du clavier et, s'il en détecte un, il appelle les abonnés aux événements. Ainsi, lorsque vous vous abonnez à un événement de presse au clavier, vous vous abonnez à un événement qui est lui-même un abonné à un événement qui interroge.
Par analogie, disons que vous vivez dans un complexe d'appartements et qu'un employé des postes dépose le courrier dans une zone de réception du courrier commun. Ensuite, un agent semblable à un système d'exploitation peut vérifier ce courrier pour tout le monde, en le distribuant dans les appartements de ceux qui ont reçu quelque chose. Cela évite à tout le monde d'avoir à sonder la zone de réception du courrier.
Mon intuition présumerait que l'écouteur d'événements vérifie en permanence si l'événement a été déclenché, ce qui signifie que dans mon scénario, ce ne serait pas différent de vérifier chaque image si l'événement a été déclenché.
D'après la discussion en classe, il semble que l'écouteur d'événements fonctionne différemment.
Comment fonctionne un écouteur d'événement?
Comme vous le soupçonniez, un événement peut fonctionner par sondage. Et si un événement est en quelque sorte lié à des événements externes, par exemple une pression sur une touche du clavier, une interrogation doit avoir lieu à un moment donné.
Il est également vrai que les événements ne nécessitent pas nécessairement un sondage. Par exemple, si l'événement survient lorsqu'un bouton est enfoncé, l'écouteur d'événements de ce bouton est une méthode que l'infrastructure graphique peut appeler lorsqu'elle détermine qu'un clic de la souris appuie sur le bouton. Dans ce cas, l'interrogation devait encore se produire pour que le clic de souris soit détecté, mais l'écouteur de souris est un élément plus passif connecté au mécanisme d'interrogation des primitives par le biais d'un chaînage d'événements.
Mise à jour: interrogation de matériel de bas niveau
Il s'avère que les périphériques USB et autres protocoles de communication modernes possèdent un ensemble de protocoles d'interaction assez fascinant, semblable à un réseau, permettant aux périphériques d'E / S, y compris les claviers et les souris, de se lancer dans des topologies ad hoc .
Il est intéressant de noter que les " interruptions " sont assez impératives, les choses synchrones, elles ne gèrent donc pas les topologies de réseau ad hoc . Pour résoudre ce problème, les " interruptions " ont été généralisées en paquets asynchrones de haute priorité appelés " transactions d'interruption " (dans le contexte de l'USB) ou " interruptions signalées par un message " (dans le contexte du PCI). Ce protocole est décrit dans une spécification USB:
- " Figure 8-31. Machine à état hôte de transaction en bloc / de contrôle / d'interruption OUT " dans "Spécifications de bus série universel, révision 2.0" , page imprimée 222; PDF-page-250 (2000-04-27)
L'essentiel semble être que les périphériques d'E / S et les composants de communication (comme les concentrateurs USB) agissent fondamentalement comme des périphériques réseau. Donc, ils envoient des messages, ce qui nécessite d'interroger leurs ports et autres. Cela réduit le besoin de lignes matérielles dédiées.
Les systèmes d’exploitation tels que Windows semblent gérer le processus d’interrogation lui-même, par exemple comme décrit dans la documentation MSDN du système USB_ENDPOINT_DESCRIPTOR
, qui explique comment contrôler la fréquence à laquelle Windows interroge un contrôleur hôte USB pour les messages d’interruption / isochrones:
La bInterval
valeur contient l'intervalle d'interrogation pour les points de terminaison interruption et isochrones. Pour les autres types de points de terminaison, cette valeur doit être ignorée. Cette valeur reflète la configuration du périphérique dans le micrologiciel. Les conducteurs ne peuvent pas le changer.
L'intervalle d'interrogation, ainsi que la vitesse du périphérique et le type de contrôleur hôte, déterminent la fréquence à laquelle le pilote doit déclencher une interruption ou un transfert isochrone. La valeur en bInterval
ne représente pas une durée fixe. Il s'agit d'une valeur relative et la fréquence d'interrogation réelle dépendra également du fait que le périphérique et le contrôleur hôte USB fonctionnent à vitesse lente, complète ou rapide.
- "Structure USB_ENDPOINT_DESCRIPTOR" , Centre de développement matériel, Microsoft
Les protocoles de connexion au moniteur plus récents, tels que DisplayPort, semblent faire la même chose:
Transport multi-flux (MST)
-Slide # 14 de "Présentation de DisplayPortTM Ver.1.2" (2010-12-06)
Cette abstraction autorise certaines fonctionnalités intéressantes, telles que l'exécution de 3 moniteurs à partir d'une seule connexion:
Le transport multi-flux DisplayPort permet également de connecter trois périphériques ou plus ensemble, mais inversement, une configuration moins orientée «consommateur»: piloter simultanément plusieurs écrans à partir d'un seul port de sortie.
- "DisplayPort" , Wikipedia
Sur le plan conceptuel, le point à retenir est que les mécanismes de scrutation permettent des communications série plus généralisées, ce qui est génial lorsque vous souhaitez des fonctionnalités plus générales. Ainsi, le matériel et le système d'exploitation interrogent beaucoup le système logique. Ensuite, les consommateurs abonnés à des événements peuvent apprécier que ces informations soient gérées par le système de niveau inférieur, sans avoir à écrire leurs propres protocoles d'interrogation / de transmission de message.
En fin de compte, des événements tels que les presses à clé semblent traverser une série d’événements assez intéressants avant d’aboutir au mécanisme de déclenchement d’événement impératif du niveau logiciel.