Verhindern das sich couts in 2 Threads überschneiden
-
Gut das Problem ist eigentlich sehr simpel, ich hab 2 Threads die "fast parallel" laufen und ´ne Ausgabe auf der Konsole machen. Der eine Thread schreibt für das Beispiel mal "Hello World from Thread 0" der andere "Hello World from Thread 1". Dann hab ich oft eine Ausgabe wie folgt:
HHeelllloo WWoorrlldd ffrroomm TThhrreeaadd 01 Hello World from Thread 0 Hello World from Thread 1
Gibt es dafür irgendeine simple Lösung ohne das man einen dritten Thread einführt, Events durch die Gegend schickt usw. usf.?
-
Ohne Synchronisationsmechanismen zu verwenden, da würde ich behaupten NEIN.
-
Würde ich auch sagen. Das Problem ist ich kann nicht einen Thread anhalten oder ähnliches.
-
Statt cout eine Funktion verwenden, die ein Mutex lockt und dann an cout weitergibt.
-
Werd ich denk ich so machen. Thx @ all.
-
Ich würde einen threadsicheren streambuf schreiben und std::cout am Anfang zuweisen. Dann kannste std::cout ganz normal benutzen und der stream buffer übernimmt das mutexen für dich.
-
Stimmt gute Idee, hab eine interessante Seite dazu gefunden:
http://uk.builder.com/programming/java/0,39026606,20279107,00.htm