std::cout ... eine Konsole für mehrere Threads?
-
Hi zusammen,
folgendes Problem: ich habe mehrere Klassen, die Messages an eine Hauptklasse schicken. In der Hauptklasse soll nun jede Message auf dem Monitor ausgegeben werden; ich mache das in der Konsole mit "std::cout".
Leider kann es vorkommen, dass zwei Messages zeitgleich eintreffen und dann beide gleichzeitig ausgegeben werden, das sieht dann in etwa so aus:Ausgabe Message 1: "Nachricht1"
Ausgabe Message 2: "Message2"
Ausgabe auf dem Bildschirm: "NMaecshsraigceh2t1" (jeweils ein Buchstabe von Message 1 und dann einer von Message 2).Das ist natürlich nicht Sinn der Sache!
Hat irgendjemand eine Idee, wie man das lösen kann? Da fehlt mir dann doch ein bisschen die Erfahrung... Bin für jeden Vorschlag dankbar!MfG Fazzyer
-
Sowas macht man z.B. mit Mutexe, du musst die Klasse, auf die beide Threads zugreifen damit threadsicher machen.
Fiktives Beispiel (Gibt verschiedene Mutexe, von ACE, von Qt, von...)
class Threadsicher { Mutex mutex; public: void ShowMessage(const std::string &msg) { mutex.lock(); cout<<msg<<endl; mutex.unlock(); } };So ungefähr

-
Unter welchem OS programmierst du?
Wenn du unter Windows zu Hause bist ist das hier dein Einstieg:
-
Hi,
vielen Dank für die Antworten, werde mich gleich mal damit auseinandersetzen.
MfG Fazzyer