私は現在、ネットワークソフトウェアに取り組んでいます。メインクラスが1つあり、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
。