时间驱动框架是一个基于时间的事件触发机制,可以用来实现定时任务、周期性任务以及延时执行等功能。下面是一个简单的C++实现:
-
定义一个事件结构体,包含事件类型和回调函数指针:
typedef void (*EventCallback)(void*); struct Event { int type; EventCallback callback; void* data; };
-
定义一个事件队列,用于存放待执行的事件:
class EventQueue { public: void add(Event event); void execute(int time); private: std::queue<Event> m_queue; };
-
实现事件队列的add方法,将事件加入队列中:
void EventQueue::add(Event event) { m_queue.push(event); }
-
实现事件队列的execute方法,遍历队列并执行已到期的事件:
void EventQueue::execute(int time) { while (!m_queue.empty() && m_queue.front().type <= time) { Event event = m_queue.front(); m_queue.pop(); event.callback(event.data); } }
-
在程序中使用事件队列,设置定时任务或周期性任务:
EventQueue queue; // 设置定时任务,在1000ms后执行 Event event1 = {1000, [](void*) { std::cout << "Task 1" << std::endl; }}; queue.add(event1); // 设置周期性任务,每隔500ms执行一次 Event event2 = {500, [](void*) { std::cout << "Task 2" << std::endl; }}; queue.add(event2); // 模拟时间流逝,每隔100ms执行一次事件队列中的任务 for (int time = 0; time <= 2000; time += 100) { queue.execute(time); }
以上就是一个简单的C++时间驱动框架的实现。可以根据具体需求进行扩展和优化。