1*6cf66801SMed Ismail Bennani #include <iostream> 2*6cf66801SMed Ismail Bennani #include <mutex> 3*6cf66801SMed Ismail Bennani #include <string> 4*6cf66801SMed Ismail Bennani #include <thread> 5*6cf66801SMed Ismail Bennani #include <vector> 6*6cf66801SMed Ismail Bennani spawn_thread(int index)7*6cf66801SMed Ismail Bennanivoid spawn_thread(int index) { 8*6cf66801SMed Ismail Bennani std::string name = "I'm thread " + std::to_string(index) + " !"; 9*6cf66801SMed Ismail Bennani bool done = false; 10*6cf66801SMed Ismail Bennani std::string state = "Started execution!"; 11*6cf66801SMed Ismail Bennani while (true) { 12*6cf66801SMed Ismail Bennani if (done) // also break here 13*6cf66801SMed Ismail Bennani break; 14*6cf66801SMed Ismail Bennani } 15*6cf66801SMed Ismail Bennani 16*6cf66801SMed Ismail Bennani state = "Stopped execution!"; 17*6cf66801SMed Ismail Bennani } 18*6cf66801SMed Ismail Bennani main()19*6cf66801SMed Ismail Bennaniint main() { 20*6cf66801SMed Ismail Bennani constexpr size_t num_threads = 10; 21*6cf66801SMed Ismail Bennani std::vector<std::thread> threads; 22*6cf66801SMed Ismail Bennani 23*6cf66801SMed Ismail Bennani for (size_t i = 0; i < num_threads; i++) { 24*6cf66801SMed Ismail Bennani threads.push_back(std::thread(spawn_thread, i)); 25*6cf66801SMed Ismail Bennani } 26*6cf66801SMed Ismail Bennani 27*6cf66801SMed Ismail Bennani std::cout << "Spawned " << threads.size() << " threads!" << std::endl; // Break here 28*6cf66801SMed Ismail Bennani 29*6cf66801SMed Ismail Bennani for (auto &t : threads) { 30*6cf66801SMed Ismail Bennani if (t.joinable()) 31*6cf66801SMed Ismail Bennani t.join(); 32*6cf66801SMed Ismail Bennani } 33*6cf66801SMed Ismail Bennani 34*6cf66801SMed Ismail Bennani return 0; 35*6cf66801SMed Ismail Bennani } 36