"Multitasking" innerhalb einer Anwendung?

Gast #986977
Lesenswert?

Hallo,

wie macht man folgendes: Auf einem embedded Linux läuft meine 
Applikation, die Daten graphisch auf einem LCD darstellt. Der Benutzer 
kann jetzt über Drehencoder den Zoom ändern oder große Datenmengen im 
Display hin- und herschieben. Jetzt können ja die Drehencoder sehr 
schnell Impulse generieren, schneller als die Zeichenroutine fertig ist. 
Das begrenzt für den Nutzer ziemlich nervig die maximale 
Geschwindigkeit, mit der er sich durch die Daten bewegt.

Ich hätte jetzt gerne eine Möglichkeit, die Zeichenroutine stumpf 
abzubrechen, wenn der Benutzer den nächsten Drehencoder-Impuls ausgelöst 
hat, ohne daß das Bild fertig aufgebaut ist. So wäre die 
Geschwindigkeit, mit der man sich durch die Daten bewegt, nicht 
begrenzt. Dreht man langsamer, wird das Bild sofort aufgebaut.

Gibt es sowas wie "Multitastink" innerhalb eines Programms?

Ach ja, ich nutze

Linux-2.6.24
directfb-1.0.1

und eine GNU Toolchain.
Gast #986981
Lesenswert?

Aha, interessant, das Stichwort kommt mir bekannt vor.

Können Threads auch miteinander kommunizieren?

Da fällt mir noch eine andere Frage ein: Oft sind ja viele GUIs in 
GNU/Linux-Systemen nichts als Frontends für die darunterliegenden 
Unix-Tools. Wie bekommt man das eigentlich hin, daß diese Anwendungen 
einen Fortschrittsbalken anzeigen, während im Hintergrund ja ein 
einfaches Kommandozeilentool arbeitet? Die müssen ja auch irgendwie 
kommunizieren können.

Gruß
der Gerhard
Gast #986995
Lesenswert?

> Können Threads auch miteinander kommunizieren?
die Threads sind ja keien eigene Prozesse, das ist alles innerhalb eines 
Prozesses - alle Thread können auf dem gesamten Speicher der Anwendung 
lesen und Schreiben - also auch auf Variablen gemeinsam zugreifen. 
(Genau dann hat man das Problem das man es nicht gleichzeitig lesen und 
schreiben sollte).
Aber man kann auch Klassisch mit IPC arbeiten.

Keine Ahnung wie das mit den Fortschritsbalken und kommandozeilen 
Programm gemacht wird.
Ich könnte mir vorstellen das die GIU nicht die Ausführbare Datei 
sondern die Libs nutzt und dort können auch Funktionen enthalten sein um 
soetwas zu bewerkstelligen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren