41 lines · cpp
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-exception6//7//===----------------------------------------------------------------------===//8 9#include <atomic>10#include <chrono>11#include <string>12#include <thread>13#include <vector>14 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