PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : komunikation mit gui und suspend



decembersoul
19-04-2005, 11:21
Hallo
Ich habe ein Programm das in der console läuft.
Dieses Programm berechnet Bilder.
Um diese Bilder mir anzeigen zu lassen, will ich mir eine kleine gui schreiben.
Die Programme kommunizieren über SharedMemory und semaphoren.

Aus testzwecken verschicke ich bis jetzt immer nur Texte.

Das Hauptprogramm soll ja auch laufen wenn keine gui da ist. Aus diesen Grund gehe ich so vor:

(KA = Kritischer Abschnitt)
(H = Hauptprogramm)
(NV = Nachricht vorhanden)

H erstellt SharedMemory.
H wartet bis ers KA betreten kann (KA=1)
wenn (NV=0) H schreibt Nachricht (NV=1)
sonst überspringe Nachricht
H verläßt KA (KA=0)

Somit bleibt die erste Nachricht erhalten bis die GUI sie ausgelesen hat.
Es werden erst neue Nachrichten geschrieben wenn die alte entnommen wurde.

GUI holt sich SharedMemory
GUI wartet bis es den KA betreten kann
GUI setzt KA=1
wenn (NV=1) lese Nachricht und setze(NV=0)
GUI verläßt KA=0


Soweit so gut.
Mein Problem ist nun das das Hauptprogramm 100mal eine neue Nachricht schreibt bevor die GUI zum lesen kommt.
Ich kann es ohne Probleme mit sleep(1) erzwingen. Dann bekomme ich den gewünschten effekt.
Da es sich um zwei Programme handelt, würde ich gerne wissen wie ich dem Scheduler beibringe das er das aktuelle Programm schlaffen legen soll und erst das andere Programm weiter führen soll. (Ich weiß nicht mehr ob suspend das richtige Wort ist.)
Unter RTKernel ging das immer mit sleep(1).
In cpp macht sleep(1) aber was anderes.
Auf jedenfall ist mein Progamm dann mega langsam.

Puh ich hoffe es versteht jemand was mein Problem ist.

decembersoul
19-04-2005, 12:38
OK ich habe es nun mit
usleep(1);
gemacht.
Funzt ganz gut.
Und die u sec habe ich über.

RHBaum
20-04-2005, 09:03
Nur so ne naive Frage :

Kann Linux / Unix keine Events ?
vielleicht User -Signale ?

In Windoof wuerd ich auf alle faelle events fuer sowas verwenden ...

Ciao ...