#include <iostream>
#include <string>
#include <thread>
// The function we execute on the new thread
void task1(std::string str) {
std::cout << "task1: " << str << "\n";
}
int main()
{
// Constructs the new thread and runs it
std::thread t1(task1, "C++ 1");
// Not blocking execution
std::cout << "main() 1\n";
std::cout << "main() 2\n";
std::cout << "main() 3\n";
std::cout << "main() 4\n";
std::thread t2(task1, "C++ 2");
std::thread t3(task1, "C++ 3");
t1.join();
t3.join();
t2.join();
}
/*
run:
main() 1
main() 2
main() 3
main() 4
task1: C++ 1
task1: C++ 2
task1: C++ 3
*/