<syncstream>

garantiert in nebenläufigen Prozessen Ausgaben ohne Wettrennen.

Beispiel

TODO: nicht getested! >= g++11

syncstream
#include <iostream>
#include <syncstream>
#include <thread>
 
auto show(int n)
{
    std::osyncstream out(cout);
    out << "Diese Ausgabe " << n << " sollte nicht verschachtelt sein.\n";
    out << "-------------\n"; 
}
 
int main()
{
    show(0);
    auto t2 = std::jthread{show, 2};
    auto t3 = std::jthread{show, 3};
    show(1);
}