File: main.cc

package info (click to toggle)
c%2B%2B-annotations 12.2.0-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 13,044 kB
  • sloc: cpp: 24,337; makefile: 1,517; ansic: 165; sh: 121; perl: 90
file content (36 lines) | stat: -rw-r--r-- 724 bytes parent folder | download
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();
}
//=