-
Hallo zusammen,
ich hab eine Frage. Hat jemand eine Idee wie man in einem Thread eine Schleife auf Grund der gleichzeitigen Abfrage nach Tastatureingabe oder Überprüfung nach Variablenänderung von ausserhalb erzeugen kann. Also ich muss quasi überprüfen, ob eine Tastatureingabe erfolgte oder der Wert einer bestimmten Variablen sich geändert hat und wenn dass der Fall ist, darf sich ein gewisser Ablauf wiederholen.
Grüße July
-
Hi
Für die Tastatur: kbhit prüft, ob eine Taste gedrückt wurde, ohne diese einzulesen.
Variablenänderung: Alten Wert speichern und regelmäßig vergleichen. Threadsafe-Sachen nicht vergessen.
Gruß
-
Das ist jetzt meine Lösung. Ehrlich gesagt begeister von ihr bin nicht! Falls ihr eine perfomantere habt, bitte posten!
Code cpp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
void * update (void *choice) { ..... do{ if(kbhit()) { cin >> choice; update(choice); break; } else if(anz_update==1) { update(choice); break; } }while(1); }
-
Ohne zu wissen, was dein Programm eigentlich macht, was update/choice/anz_update etc. ist, kann dir da wohl keiner helfen.
Warum rufst du update in update auf?
Wenn anz_update 1 wird bekommst du einen Stack Overflow.
Was ist die Variable, die sich ändert?
anz_update?
Wo ist dann die Absicherung für gleichzeitige Zugriffe?
-
na ja die Methode dient zur Darstellung einer Anzeige, also wenn der Benutzer iwas eintippt oder intern was neues passiert (verändert anz_update), was zu der Veränderung der aktuellen Anzeige führt, muss ich drauf reagieren.
-
anz_update wird also aus einem anderen Thread heraus verändert.
Zitat von Sheel
-
weil ich mit dem Thread(in diesem Fall einem bestimmten Fenster) weiter arbeiten möchte und keine Lust auf 20.000 neue Fenster hab. Und so wird die Oberfläche nur mit den aktuellen Werten aktualisiert.Warum rufst du update in update auf?
Jep, hab jetzt das auch gesehen darum hab ich gerade den Code schon angepasst.Wenn anz_update 1 wird bekommst du (deswegen) einen Stack Overflow.
Code cpp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
void * update (void *choice) { ..... do{ if(kbhit()) { cin >> choice; break; } else if(anz_update==1) {anz_update = 0; break; } Sleep(100) }while(1); update(choice); }
da arbeite ich gerade dranWo ist die Absicherung für gleichzeitige Zugriffe? (bei anz_update)Geändert von july (22.08.11 um 15:16 Uhr)
-
Jetzt bekommst du erst recht einen Stack-Overflow.
Und das Sleep zögert ihn nur hinaus.
Der Speicher wird totzdem zugemüllt, nur langsamer.
Reicht die while(1)-Schleife nicht, um den Thread am Leben zu halten?
Weg mit den breaks und fertig.
-
-
Ich versteh dich nicht.
Ob du jetzt eine Endlosschleife oder eine endlose Rekursion hast, was ändert das an der GUI?
Da Draw oder was auch immer nicht in diesem Thread ist, sollte es gar nichts ändern.
Und noch einmal: Eine Endlosrekursion ist kein Allheilmittel, sondern ein weiteres Problem.
-
es gibt keine richtige GUI, es wird nur in der Console erstmal dargestellt... Ist halt nur zum Testen eines Teils der Programm wie es aussieht, bevor es auf die HW kommt und da gibt's schon eigene Anzeige.
-
22.08.11 16:31 #12
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Hi.
Welches Betriebssystem?
Anstatt ständig zu pollen, könntest du evtl. auch andere Methoden verwenden (WaitForSingleObject) bzw. Events oder Conditional Variables. Kommt drauf an, wer die Variable ändert (dein eigener Code?)
Und eine Rekursion läßt sich immer in eine Iteration umwandeln.
GrußIf at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
-
23.08.11 09:50 #14
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
Iwie fällt mir nichts mehr ein, hab schon alles ausprobiert: die Events, Mutexe... ich krieg zwar mit, ob sich die Variable geändert hat oder ob's eine Tastatureingabe gab, aber nicht beides parallel
(((( Hat jemand ne idee wie man gleichzeitig auf keyboardevent und mutex änderung z.B. abfragen kann?
Ähnliche Themen
-
[LINUX] Hintergrundprozess auf Tastatureingabe reagieren lassen
Von trench140 im Forum C/C++Antworten: 2Letzter Beitrag: 19.09.11, 08:34 -
Suche eine Projekt oder eine kleine Gruppe
Von Code46 im Forum Stellengesuche (unentgeltlich)Antworten: 0Letzter Beitrag: 21.03.10, 13:49 -
Eine HTML oder PHP-Datei in eine andere HTML Datei includen
Von peda-deshi im Forum PHPAntworten: 3Letzter Beitrag: 28.07.05, 13:59 -
Wie erstelle ich eine css datei, oder kann mir einer eine css Datei erstellen
Von Jack iZ BaQ im Forum CSSAntworten: 2Letzter Beitrag: 01.02.04, 22:11 -
c#: Was für eine ide ist gut oder was für eine nehmt ihr
Von Tobi im Forum C/C++Antworten: 2Letzter Beitrag: 22.06.02, 00:29



1Danke

Zitieren


Login






