【发布时间】:2011-08-19 04:38:03
【问题描述】:
我目前正在研究网络软件。它有一个主类server,它显然代表了一个服务器实例。
server 实例可以发送请求,并通过回调通知用户响应。
代码如下:
class server
{
public:
typedef boost::function<void (int duration)> callback_func;
void send_request(endpoint& ep, callback_func cb);
};
现在假设,作为用户,我想通过回调了解调用它的实例,我可以执行以下操作:
void mycallback(const server& sv, int duration) { ... }
server sv;
sv.send_request("localhost", boost::bind(&mycallback, boost::ref(sv), _1));
但我想知道:这样做有什么开销吗?对mycallback 的调用会比使用“常规”调用慢吗?
谢谢。
脚注:我当然可以将我的typedef 更改为:typedef boost::function<void (const server& sv, int duration)> callback_func;,如果boost::bind 造成任何重大开销,那可能就是我最终要做的。我只是想知道使用boost::bind 意味着什么成本。
【问题讨论】: