11 #include "threads/Thread.h"    16 #include <gtest/gtest.h>    19 inline static bool waitForWaiters(E& event, 
int numWaiters, std::chrono::milliseconds duration)
    21   for (
auto i = std::chrono::milliseconds::zero(); i < duration; i++)
    23     if (event.getNumWaits() == numWaiters)
    26     std::this_thread::sleep_for(std::chrono::milliseconds(1));
    32 inline static bool waitForThread(std::atomic<long>& mutex,
    34                                  std::chrono::milliseconds duration)
    37   for (
auto i = std::chrono::milliseconds::zero(); i < duration; i++)
    39     if (mutex == (
long)numWaiters)
    43       std::unique_lock<CCriticalSection> tmplock(sec); 
    46     std::this_thread::sleep_for(std::chrono::milliseconds(1));
    54   std::atomic<long>* val;
    56   inline AtomicGuard(std::atomic<long>* val_) : val(val_) { 
if (val) ++(*val); }
    62   std::unique_ptr<CThread> cthread;
    66     : cthread(std::make_unique<CThread>(&runnable, 
"DumbThread"))
    71   void join() { cthread->Join(std::chrono::milliseconds::max()); }
    73   bool timed_join(std::chrono::milliseconds duration) { 
return cthread->Join(duration); }
 Definition: TestHelpers.h:60
Definition: IRunnable.h:11
Definition: TestHelpers.h:52