1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
// compile with --std=c++20 (or later) and -pthread
//code
#include <iostream>
#include <syncstream>
#include <string>
#include <thread>
using namespace std;
void fun(char const *label, size_t count)
{
osyncstream out(cout);
for (size_t idx = 0; idx != count; ++idx)
{
this_thread::sleep_for(1s);
out << label << ": " << idx << " running...\n";
}
out << label << " ends\n";
}
int main(int argc, char **argv)
{
cout << "the 1st arg specifies the #iterators "
"using 3 iterations by default\n";
size_t count = argc > 1 ? stoul(argv[1]) : 3;
thread thr1{ fun, "first", count };
thread thr2{ fun, "second", count };
thr1.join();
thr2.join();
}
//=
|