Go Down

Topic: [OT] Was versteht man unter "Threads, Events, Callbacks, Sequenzell" (Read 3110 times) previous topic - next topic

DrDiettrich

Ich versuche mal, einen Lkw-Fahrer zu programmieren:

Der muß/sollte ständig nach vorne, auf den Tacho usw. schauen. Das sind Aufgaben (Tasks, Threads), die parallel laufen, soweit der Fahrer eben alles gleichzeitig tun kann. Ansonsten muß er in loop() ständig der Reihe nach (sequentiell) hier und dorthin schauen; diese Technik nennt sich dann Polling (quasi-parallele Verarbeitung).

Wenn sich vorne etwas tut, dann ist das ggf. ein Ereignis (Event), auf das er reagieren muß. Das kann eine kurze Reaktion sein, z.B. ein Fluch, oder er beginnt ein Bremsmanöver als neuen Thread. Dieser Thread muß natürlich im Programm (in loop) schon drinstehen, er wird aber nur dann ausgeführt, wenn/solange die Bedingung (Hindernis voraus, Ampel rot...) vorliegt, auf die er reagieren muß.

Dann gibt es noch Ereignisse, z.B. Hupen, die immer durchkommen, ohne daß der Fahrer extra nachschauen muß. Die liegen auf einem Interrupt-Eingang, und der zugehörige Interrupt-Handler wird automatisch sofort aufgerufen, alles übrige bleibt dann erst mal liegen. Der Interrupt-Handler sollte nur ein Flag setzen, das den Brems-Thread aktiviert, und dann zum normalen Ablauf zurückkehren, damit Bremsen, Schauen usw. weiterläuft.

Callbacks sind eine Art programmierbare Interrupts, eher ungebräuchlich wenn der Fahrer auf Interrupts direkt reagieren kann. Mit attachInterrupt könnte er z.B. direkt reagieren, wenn sein Einweiser beim Rangieren "Stop" ruft, ansonsten läßt er sich davon nicht beeindrucken. Beim Arduino könnte man stattdessen auch den Interrupt ein- und ausschalten, aber auf einem PC kann ein Programm das nicht tun. Dort muß ein Programm dem System sagen, welches seiner Unterprogramme vom System aufgerufen werden soll, wenn z.B. ein Teil einer Datei eingelesen wurde, damit das Programm mit der Verarbeitung dieses Teils nicht warten muß, bis die Datei vollständig gelesen wurde. Z.B. den Teil einer Musikdatei gleich abspielen, während das System noch den Rest lädt.

Noch Fragen?

Muecke

Also mir ist mittlerweile einiges Klarer geworden, und es sind echt gute Beispiele dabei. Dank.

jetzt ist erst mal soweit alles Klar für mich. glaube ich.
- Anfänger in allen Hinsicht - Bilder sichtbar einstellen
1  Bild Hochladen (Attachements); 2 Beitrag Save; 3 Anhang rechter Mausklick; "Adresse des Links kopieren"; 4 Beitrag „Modify"; 5 img-Tags mit dem kopierten Link einfügen; 6 Beitrag Save
DANKE

Go Up