我继承了一些 boost::asio 代码,这些代码利用异步方法通过某些套接字读取/写入数据。目前,代码使用 boost::bind 的读/写处理程序来类成员函数,如下所示:
boost::asio::async_read(socket_, boost::asio::buffer(&in_data.header.packet_size, 1), boost::bind(&SocketIO::handle_read, shared_from_this(), boost::asio::placeholders::error);
我想使用 boost::function 更改代码以使用存储的绑定版本,但我不清楚这样做是否有任何优点或缺点。我认为不连续重新创建绑定会减少对象分配。但是,async_receive 的 boost 文档(在此处列出)声明“将根据需要对处理程序进行复制”。我不确定什么条件需要制作副本。
对此的任何见解将不胜感激。