#pragma once class CPUThread; class CallbackManager { std::vector> m_cb_list; std::vector> m_async_list; CPUThread* m_cb_thread; std::mutex m_mutex; public: void Register(const std::function& func); // register callback (called in Check() method) void Async(const std::function& func); // register callback for callback thread (called immediately) bool Check(s32& result); // call one callback registered by Register() method void Init(); void Clear(); };