#pragma once #include #include #include class WaitQueue { public: WaitQueue(); ~WaitQueue(); void enqueue(Thread&); void wake_one(Atomic* lock = nullptr); void wake_all(); private: typedef IntrusiveList ThreadList; ThreadList m_threads; };