Ich versuche zu verstehen, was eine Ereignisschleife ist. Oft ist die Erklärung, dass Sie in einer Ereignisschleife so lange etwas tun, bis Sie benachrichtigt werden, dass ein Ereignis aufgetreten ist. Sie behandeln dann das Ereignis und setzen fort, was Sie zuvor getan haben.
Um die obige Definition mit einem Beispiel abzubilden. Ich habe einen Server, der in einer Ereignisschleife 'lauscht', und wenn eine Socket-Verbindung erkannt wird, werden die Daten von diesem Server gelesen und angezeigt, wonach der Server wie zuvor mit dem Abhören fortfährt / beginnt.
Es ist jedoch zu viel für mich, wenn dieses Ereignis passiert und wir einfach so benachrichtigt werden. Sie können sagen: "Es ist nicht einfach so, dass Sie einen Ereignis-Listener registrieren müssen." Was aber ein Ereignis-Listener ist, ist eine Funktion, die aus irgendeinem Grund nicht zurückkehrt. Befindet es sich in einer eigenen Schleife und wartet darauf, benachrichtigt zu werden, wenn ein Ereignis eintritt? Sollte der Ereignis-Listener auch einen Ereignis-Listener registrieren? Wo hört es auf?
Ereignisse sind eine nette Abstraktion, mit der man arbeiten kann, jedoch nur eine Abstraktion. Ich bin der Meinung, dass Abstimmungen am Ende unvermeidlich sind. Vielleicht machen wir das nicht in unserem Code, aber die niedrigeren Ebenen (die Implementierung der Programmiersprache oder das Betriebssystem) machen das für uns.
Es kommt im Grunde genommen auf den folgenden Pseudocode an, der irgendwo niedrig genug ist, so dass es nicht zu beschäftigtem Warten kommt:
while(True):
do stuff
check if event has happened (poll)
do other stuff
Dies ist mein Verständnis der ganzen Idee und ich würde gerne hören, ob dies richtig ist. Ich bin offen dafür zu akzeptieren, dass die ganze Idee von Grund auf falsch ist. In diesem Fall möchte ich die richtige Erklärung.
EventSource
tun, wenn die Tastatureingabe nicht abgefragt wird?