Remove possibility of failures to due race in ThreadPool unittest
[oota-llvm.git] / unittests / Support / ThreadPool.cpp
index 5fb1453..b0e33c1 100644 (file)
 #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
-}
 
 // Fixture for the unittests, allowing to *temporarily* disable the unittests
 // on a particular platform
@@ -83,11 +71,9 @@ TEST_F(ThreadPoolTest, AsyncBarrier) {
   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);
 }
@@ -111,13 +97,10 @@ TEST_F(ThreadPoolTest, Async) {
   CHECK_UNSUPPORTED();
   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());
 }
@@ -126,14 +109,11 @@ TEST_F(ThreadPoolTest, GetFuture) {
   CHECK_UNSUPPORTED();
   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());
 }
@@ -147,11 +127,9 @@ TEST_F(ThreadPoolTest, PoolDestruction) {
     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);
 }