你不是一直用协程吗?可以用一个套路,把所有的回调都转成协程阻塞的玩法:
回调式:
void on_success(result_set) {
/* 直接处理事件 */
}
async_query(sql, on_success);
可以转成:
// 接下来三行是固定套路。
finished = new event();
void send_result(result_set) {
finished.send(result_set);
}
async_query(sql, send_result);
// 程序员专注这一行
result_set = finished.await();
没有回调,生命周期就很好协调。
其中的工具类是 Event, 它有两个方法:
Event::send(T result);
T Event::await();
它的定义是
class Event {
T result = T();
bool success = false;
Condition condition;
}
这就是把回调薅直的秘密。
【 在 ylh1969 的大作中提到: 】
: 没理解。
: 泛型编程很重要,尤其是运行时泛型,就是靠回调函数。请看C版关于泛型的帖子。
: 运行时泛型,主要两点:
: ...................
--
修改:hgoldfish FROM 125.78.41.*
FROM 125.78.41.*