#pragma once #include "Common/Thread/ThreadManager.h" #include #include struct Event : public Waitable { public: Event() { triggered_ = false; } void Wait() override { std::unique_lock lock; if (!triggered_) { cond_.wait(lock, [&] { return triggered_.load(); }); } } void Notify() { std::unique_lock lock; triggered_ = true; cond_.notify_one(); } private: std::condition_variable cond_; std::mutex mutex_; std::atomic triggered_; };