1 //===-- thread_inferior.cpp -----------------------------------------------===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #include <atomic> 10 #include <chrono> 11 #include <string> 12 #include <thread> 13 #include <vector> 14 main(int argc,char * argv[])15int main(int argc, char* argv[]) { 16 int thread_count = 2; 17 if (argc > 1) { 18 thread_count = std::stoi(argv[1], nullptr, 10); 19 } 20 21 std::atomic<bool> delay(true); 22 std::vector<std::thread> threads; 23 for (int i = 0; i < thread_count; i++) { 24 threads.push_back(std::thread([&delay] { 25 while (delay.load()) 26 std::this_thread::sleep_for(std::chrono::seconds(1)); 27 })); 28 } 29 30 // Cause a break. 31 volatile char *p = nullptr; 32 *p = 'a'; 33 34 delay.store(false); 35 for (std::thread& t : threads) { 36 t.join(); 37 } 38 39 return 0; 40 } 41