diff --git a/llvm/unittests/Support/ThreadPool.cpp b/llvm/unittests/Support/ThreadPool.cpp
index b0307d1..0f36c38 100644
--- a/llvm/unittests/Support/ThreadPool.cpp
+++ b/llvm/unittests/Support/ThreadPool.cpp
@@ -62,12 +62,16 @@
   }
 
   /// Set the readiness of the main thread.
-  void setMainThreadReadyState(bool Ready) {
-    std::unique_lock<std::mutex> LockGuard(WaitMainThreadMutex);
-    MainThreadReady = Ready;
+  void setMainThreadReady() {
+    {
+      std::unique_lock<std::mutex> LockGuard(WaitMainThreadMutex);
+      MainThreadReady = true;
+    }
     WaitMainThread.notify_all();
   }
 
+  void SetUp() override { MainThreadReady = false; }
+
   std::condition_variable WaitMainThread;
   std::mutex WaitMainThreadMutex;
   bool MainThreadReady;
@@ -86,7 +90,6 @@
 
   std::atomic_int checked_in{0};
 
-  setMainThreadReadyState(false);
   ThreadPool Pool;
   for (size_t i = 0; i < 5; ++i) {
     Pool.async([this, &checked_in, i] {
@@ -95,7 +98,7 @@
     });
   }
   ASSERT_EQ(0, checked_in);
-  setMainThreadReadyState(true);
+  setMainThreadReady();
   Pool.wait();
   ASSERT_EQ(5, checked_in);
 }
@@ -119,14 +122,13 @@
   CHECK_UNSUPPORTED();
   ThreadPool Pool;
   std::atomic_int i{0};
-  setMainThreadReadyState(false);
   Pool.async([this, &i] {
     waitForMainThread();
     ++i;
   });
   Pool.async([&i] { ++i; });
   ASSERT_NE(2, i.load());
-  setMainThreadReadyState(true);
+  setMainThreadReady();
   Pool.wait();
   ASSERT_EQ(2, i.load());
 }
@@ -135,7 +137,6 @@
   CHECK_UNSUPPORTED();
   ThreadPool Pool;
   std::atomic_int i{0};
-  setMainThreadReadyState(false);
   Pool.async([this, &i] {
     waitForMainThread();
     ++i;
@@ -143,7 +144,7 @@
   // Force the future using get()
   Pool.async([&i] { ++i; }).get();
   ASSERT_NE(2, i.load());
-  setMainThreadReadyState(true);
+  setMainThreadReady();
   Pool.wait();
   ASSERT_EQ(2, i.load());
 }
@@ -153,7 +154,6 @@
   // Test that we are waiting on destruction
   std::atomic_int checked_in{0};
   {
-    setMainThreadReadyState(false);
     ThreadPool Pool;
     for (size_t i = 0; i < 5; ++i) {
       Pool.async([this, &checked_in, i] {
@@ -162,7 +162,7 @@
       });
     }
     ASSERT_EQ(0, checked_in);
-    setMainThreadReadyState(true);
+    setMainThreadReady();
   }
   ASSERT_EQ(5, checked_in);
 }
