diff --git a/llvm/unittests/Support/ThreadPool.cpp b/llvm/unittests/Support/ThreadPool.cpp --- a/llvm/unittests/Support/ThreadPool.cpp +++ b/llvm/unittests/Support/ThreadPool.cpp @@ -71,7 +71,7 @@ void SetUp() override { MainThreadReady = false; } - void TestAllThreads(ThreadPoolStrategy S); + void RunOnAllSockets(ThreadPoolStrategy S); std::condition_variable WaitMainThread; std::mutex WaitMainThreadMutex; @@ -169,7 +169,7 @@ #if LLVM_ENABLE_THREADS == 1 -void ThreadPoolTest::TestAllThreads(ThreadPoolStrategy S) { +void ThreadPoolTest::RunOnAllSockets(ThreadPoolStrategy S) { // FIXME: Skip these tests on non-Windows because multi-socket system were not // tested on Unix yet, and llvm::get_thread_affinity_mask() isn't implemented // for Unix. @@ -181,9 +181,10 @@ std::mutex Lock; { ThreadPool Pool(S); - for (size_t I = 0; I < 10000; ++I) { + for (size_t I = 0; I < S.compute_thread_count() * 4; ++I) { Pool.async([&] { waitForMainThread(); + std::this_thread::sleep_for(std::chrono::milliseconds(200)); std::lock_guard Guard(Lock); auto Mask = llvm::get_thread_affinity_mask(); ThreadsUsed.insert(Mask); @@ -197,12 +198,12 @@ TEST_F(ThreadPoolTest, AllThreads_UseAllRessources) { CHECK_UNSUPPORTED(); - TestAllThreads({}); + RunOnAllSockets({}); } TEST_F(ThreadPoolTest, AllThreads_OneThreadPerCore) { CHECK_UNSUPPORTED(); - TestAllThreads(llvm::heavyweight_hardware_concurrency()); + RunOnAllSockets(llvm::heavyweight_hardware_concurrency()); } #endif