Thread Hat Perl events?
(12 answers)
Opened by bianca at 2021-10-27 09:35
Mir fallen zwei Situationen ein, in denen es das gibt. In beiden gibt es einen MainLoop, der die Sache kontrolliert:
1. In Perl/Tk. Also z.B. "-textvariable" bei einem Label-Widget. Ändert sich der Inhalt der Variablen, wird die Anzeige des Label-Widgets aktualisiert. Verantwortlich dafür ist der MainLoop in Tk. 2. Bei Spielen mit SDL_perl. Auch da gibt es einen MainLoop. Den kann man ggf. auch selbst mit einer einfachen while()-Schleife schreiben. Der MainLoop läuft dann permanent (solange das Programm läuft) durch die Funktionen. Dabei prüft er z.B., welchen Inhalt "$back" hat, dann springt er in die genannte Funktion, in der dann je nach dem Zustand von "$back" "return 0;" ausgelöst wird. Also in Programmen dieser Art, in denen der Programmablauf von einem MainLoop kontrolliert wird, kann man so etwas machen. Man kann dann z.B. auch mehrere Vorgänge "gleichzeitig" verarbeiten, wenn Du z.B. an ein Spiel denkst: Die Spielfigur bewegt sich, die gegnerischen Spielfiguren auch, Keyboard-Events werden verarbeitet, Sound wird abgespielt, der Bildschirm wird aktualisiert, und das alles sozusagen "simultan" (mit allerhand "frames per second"). Dafür braucht man so einen MainLoop. Wenn man so etwas schreibt, muß man sich erst daran gewöhnen, daß der Programmablauf anders funktioniert als bei einem normalen Skript, in dem alles schön "langsam" der Reihe nach abläuft. Aber das ist manchmal halt nötig, z.B. bei GUI-Anwendungen oder Spielen. Und das ist ja nun nicht gerade ein kleiner Teil von Programmen, eher die Mehrzahl. Last edited: 2021-10-27 13:11:08 +0200 (CEST) |