31 lines · plain
1// RUN: %clangxx_tsan %s -o %t2// RUN: %run %t 2>&1 | FileCheck %s3 4#include <iostream>5#include <future>6#include <vector>7 8int main(int argc, const char *argv[]) {9 fprintf(stderr, "Hello world.\n");10 11 auto my_task = [] { return 42; };12 13 std::vector<std::thread> threads;14 15 for (int i = 0; i < 100; i++) {16 std::packaged_task<int(void)> task(my_task);17 std::future<int> future = task.get_future();18 threads.push_back(std::thread(std::move(task)));19 }20 21 for (auto &t : threads) {22 t.join();23 }24 25 fprintf(stderr, "Done.\n");26}27 28// CHECK: Hello world.29// CHECK-NOT: WARNING: ThreadSanitizer30// CHECK: Done.31