Advertisement
spotapov

ManualResetEvent

Jul 24th, 2017
293
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.52 KB | None | 0 0
  1. #pragma once
  2.  
  3. #include <condition_variable>
  4.  
  5.  
  6. class ManualResetEvent
  7. {
  8. public:
  9.     ManualResetEvent() : _signaled(false) {}
  10.  
  11.     void signal()
  12.     {
  13.         std::unique_lock<mutex> lock(_mutex);
  14.         _signaled = true;  
  15.         _cond.notify_all();
  16.     }
  17.  
  18.     void unsignal()
  19.     {
  20.         std::unique_lock<mutex> lock(_mutex);
  21.         _signaled = false;
  22.     }
  23.  
  24.  
  25.     void wait()
  26.     {
  27.         std::unique_lock<mutex> lock(_mutex);
  28.  
  29.         while ( !_signaled )
  30.             _cond.wait(lock);
  31.     }
  32.  
  33. private:
  34.     mutex _mutex;
  35.     std::condition_variable _cond;
  36.     bool _signaled;
  37. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement