xref: /llvm-project/lldb/test/API/functionalities/interactive_scripted_process/main.cpp (revision 6cf668016efde05db8c9f179843ec457ad017ff7)
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 Bennani void 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 Bennani int 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