diff options
Diffstat (limited to 'llvm/unittests/Support/ThreadPool.cpp')
-rw-r--r-- | llvm/unittests/Support/ThreadPool.cpp | 91 |
1 files changed, 0 insertions, 91 deletions
diff --git a/llvm/unittests/Support/ThreadPool.cpp b/llvm/unittests/Support/ThreadPool.cpp deleted file mode 100644 index d36341e425d..00000000000 --- a/llvm/unittests/Support/ThreadPool.cpp +++ /dev/null @@ -1,91 +0,0 @@ -//========- unittests/Support/ThreadPools.cpp - ThreadPools.h tests --========// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#include "llvm/Support/ThreadPool.h" - -#include "llvm/ADT/STLExtras.h" - -#include "gtest/gtest.h" - -using namespace llvm; -using namespace std::chrono; - -/// Try best to make this thread not progress faster than the main thread -static void yield() { -#ifdef LLVM_ENABLE_THREADS - std::this_thread::yield(); -#endif - std::this_thread::sleep_for(milliseconds(200)); -#ifdef LLVM_ENABLE_THREADS - std::this_thread::yield(); -#endif -} - -TEST(ThreadPoolTest, AsyncBarrier) { - // test that async & barrier work together properly. - - std::atomic_int checked_in{0}; - - ThreadPool Pool; - for (size_t i = 0; i < 5; ++i) { - Pool.async([&checked_in, i] { - yield(); - ++checked_in; - }); - } - ASSERT_EQ(0, checked_in); - Pool.wait(); - ASSERT_EQ(5, checked_in); -} - -TEST(ThreadPoolTest, Async) { - ThreadPool Pool; - std::atomic_int i{0}; - // sleep here just to ensure that the not-equal is correct. - Pool.async([&i] { - yield(); - ++i; - }); - Pool.async([&i] { ++i; }); - ASSERT_NE(2, i.load()); - Pool.wait(); - ASSERT_EQ(2, i.load()); -} - -TEST(ThreadPoolTest, GetFuture) { - ThreadPool Pool; - std::atomic_int i{0}; - // sleep here just to ensure that the not-equal is correct. - Pool.async([&i] { - yield(); - ++i; - }); - // Force the future using get() - Pool.async([&i] { ++i; }).get(); - ASSERT_NE(2, i.load()); - Pool.wait(); - ASSERT_EQ(2, i.load()); -} - -TEST(ThreadPoolTest, PoolDestruction) { - // Test that we are waiting on destruction - std::atomic_int checked_in{0}; - - { - ThreadPool Pool; - for (size_t i = 0; i < 5; ++i) { - Pool.async([&checked_in, i] { - yield(); - ++checked_in; - }); - } - ASSERT_EQ(0, checked_in); - } - ASSERT_EQ(5, checked_in); -} |