C++ cout Routine unterbrechen in Konsolenanwendung

T_55

Lieutenant
Registriert
Feb. 2013
Beiträge
643
Hallo,

mal angenommen mehrere Threads geben permanent Infos per cout in der Konsoleanwendung raus.
Wenn man aber zwischendurch durch Eingabe von etwas eine Variable ändern will dann würde wahrscheinlich das permanente cout der Threads eine Eingabe verhindern. Generell wäre für eine Eingabe cin nötig was aber eine Pause verursachen würde.

Ist es möglich durch Eingabe oder Drücken einer Taste die cout Ausgaben kurz zu unterbrechen um dann per cin eine Variable zu ändern? Im Prinzip wäre es prima wenn es sozusagen ein Ausgabemodus und ein Bearbeitungsmodus geben würde zwischen dem man wechseln kann.

Die permanenten cout Ausgaben könnte man sperren/entsperren über eine globales atomic flag. Eigentlich wäre alles easy wenn eine bestimmte Taste oder Eingabe während den permanenten cout Ausgaben das flag verstellt um dann in Ruhe ein cin Bearbeitung zu machen. Aber wie stelle ich ein flag um ohne in einer cin-Pause zu stecken?

Gruß
 
Das, was du willst, nennt sich asynchrones I/O (in dem Fall für die Konsole). Würde mich darüber mal informieren.
 
"Mehrere Threads" "cout Ausgabe" braucht doch sowieso einen Mutex oder was auch immer oder es kommt Buchstabensalat raus.
Was ist also die Serialisierungsfunktion damit nicht mehrere cout Aufrufe wild durcheinanderschreiben?
 
Genau für die Ausgaben müssten per Mutex oder Atomic was gemacht werden aber das wäre nicht das Problem. Das Problem ist, wie fange ich einen Tastenanschlag ab während ständig cout ausgegeben wird?
 
Mach die Eingabe in einen Thread, nach der Eingabe die Ausgabe blockieren, Variable ändern, Ausgabe freigeben, fertig.
 
Perfekt danke das klappt prima. Trennung zwischen Ausgabemodus und Bearbeitungsmodus in Konsole ist doch prima, muss nicht immer GUI sein :)
 
Zurück
Oben