我目前正在研究网络软件。它有一个主类,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
.