//******************************************************** // The following code example is taken from the book // C++20 - The Complete Guide // by Nicolai M. Josuttis (www.josuttis.com) // http://www.cppstd20.com // // The code is licensed under a // Creative Commons Attribution 4.0 International License // http://creativecommons.org/licenses/by/4.0/ //******************************************************** #include #include #include #include void squareRoots(std::ostream& strm, int num) { for (int i = 0; i < num ; ++i) { strm << "squareroot of " << i << " is " << std::sqrt(i) << '\n' << std::flush_emit; } } int main() { std::ofstream fs{"tmp.out"}; std::osyncstream syncStrm1{fs}; std::jthread t1(squareRoots, std::ref(syncStrm1), 5); std::osyncstream syncStrm2{fs}; std::jthread t2(squareRoots, std::ref(syncStrm2), 5); std::osyncstream syncStrm3{fs}; std::jthread t3(squareRoots, std::ref(syncStrm3), 5); }