根据 boost asio 文档,如果我在一个有异步连接操作挂起的套接字上调用 close,则处理程序将被“立即”调用并带有错误代码。从文档中:
该函数用于关闭套接字。任何异步发送、接收或连接操作都将立即取消,并以 boost::asio::error::operation_aborted 错误完成。
但是处理程序实际上并不是立即/同步调用的,它是在控制权返回到 io_service 时异步调用的。如果连接实际上成功并且我的处理程序回调已经发布到 io_service,在我调用 close后,我的连接处理程序是否仍会被调用而没有错误代码?