回调函数中的void指针
函数指针
主要用于将函数定义为参数类型,便于传入1
2
3
4// C++
typedef std::function<void(void*)>CallBack;
// C
typedef void (*Callback)(void*);
Event
1 | void Event::handleEvent(Callback cb, void* arg) |
Task
Task主要定义了 Event 要使用的回调函数1
2
3
4
5
6
7
8
9
10
11
12void Task::callback(void* arg)
{
Task* task = (Task*)arg;
Task->handle();
}
// 可能根据 Task 的类型变化而变化
void Task::handle()
{
// do something
// 特别是要使用类成员等非 static 内容等情况
}
Server
根据使用场景不同,可以通过回调函数的方式,在业务场景末端(顶层)如Server,灵活调整每个 Event 处理的事务1
2
3
4
5
6
7
8
9
10
11
12
13
14void Server::handle()
{
//...
Task* t1 = Task("type1");
Task* t2 = Task("type2");
//...
for(auto& e: events)
{
// 根据使用场景不同,可以在业务末端灵活调整
e->handleEvent(t1->callback, t1);
e->handleEvent(t2->callback, t2);
}
}
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Ali5669!
评论