#include <bits/stdc++.h>
#include <thread>
using namespace std;
void task() {
std::cout << "task 1 says Hi\n";
}
void task2() {
std::cout << "task 2 says Hi\n";
}
void task3() {
std::cout << "task 3 says Hi\n";
}
void task4() {
std::cout << "task 4 says Hi\n";
}
int main() {
std::thread t1(task);
std::thread t2(task2);
std::thread t3(task3);
std::thread t4(task4);
t4.join();
std::cout << "main says Hi 1\n";
// synchronize - IMPORTANT!
t2.join();
t3.join();
t1.join();
std::cout << "main says Hi 2" << std::endl;
system("pause");
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNpbmNsdWRlIDx0aHJlYWQ+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp2b2lkIHRhc2soKSB7CiAgICBzdGQ6OmNvdXQgPDwgInRhc2sgMSBzYXlzIEhpXG4iOwp9CnZvaWQgdGFzazIoKSB7CiAgICBzdGQ6OmNvdXQgPDwgInRhc2sgMiBzYXlzIEhpXG4iOwp9CnZvaWQgdGFzazMoKSB7CiAgICBzdGQ6OmNvdXQgPDwgInRhc2sgMyBzYXlzIEhpXG4iOwp9CnZvaWQgdGFzazQoKSB7CiAgICBzdGQ6OmNvdXQgPDwgInRhc2sgNCBzYXlzIEhpXG4iOwp9CmludCBtYWluKCkgewogICAgc3RkOjp0aHJlYWQgdDEodGFzayk7CiAgICBzdGQ6OnRocmVhZCB0Mih0YXNrMik7CiAgICBzdGQ6OnRocmVhZCB0Myh0YXNrMyk7CiAgICBzdGQ6OnRocmVhZCB0NCh0YXNrNCk7CgogICAgdDQuam9pbigpOwogICAgc3RkOjpjb3V0IDw8ICJtYWluIHNheXMgSGkgMVxuIjsKICAgIC8vIHN5bmNocm9uaXplIC0gSU1QT1JUQU5UIQogICAgdDIuam9pbigpOwogICAgdDMuam9pbigpOwogICAgdDEuam9pbigpOwogICAgc3RkOjpjb3V0IDw8ICJtYWluIHNheXMgSGkgMiIgPDwgc3RkOjplbmRsOwogICAgc3lzdGVtKCJwYXVzZSIpOwp9