1// RUN: %clangxx_tsan %s -o %t 2// RUN: %run %t 2>&1 | FileCheck %s 3 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: ThreadSanitizer 30// CHECK: Done. 31