Ich habe OpenMP-Threads, die über cout und cerr auf die Konsole schreiben. Dies ist natürlich nicht sicher, da die Ausgabe verschachtelt werden kann. Ich könnte so etwas wiemehrere Threads, die auf std :: cout oder std :: cerr schreiben
#pragma omp critical(cerr)
{
cerr << "my variable: " << variable << endl;
}
Es wäre schöner machen, wenn cerr mit einem Thread-sichere Version ersetzen könnte, ähnlich dem Ansatz in der valgrind DRD Handbuch erklärt (http://valgrind.org/docs/manual/drd-manual.html#drd-manual.effective-use), die von std Ableiten einer Klasse beinhaltet :: ostreambuf . Idealerweise würde ich am Ende cerr durch meinen eigenen cerr ersetzen, z. simply:
Eine solche Klasse könnte auf die Konsole drucken, sobald sie auf ein "endl" stößt. Es macht mir nichts aus, wenn Zeilen aus verschiedenen Threads verschachtelt sind, aber jede Zeile sollte nur aus einem Thread kommen.
Ich verstehe nicht wirklich, wie all dieses Streaming in C++ funktioniert, es ist zu kompliziert. Hat jemand solch eine Klasse oder kann mir zeigen, wie man eine solche Klasse für diesen Zweck erstellt?
bitte nicht vorschlagen printf ..;) – Wolfgang
* „Das ist natürlich nicht sicher“ * - Das in C++ nicht wahr ist 11, es sei denn, Sie absichtlich Maßnahmen ergreifen, um es wahr . –
Ihr Titel sagt 'cout' nicht' cerr'. – Barmar