异步操作流程
初始化连接操作
1
socket.async_connect(server_endpoint, your_completion_handler);
这个 your_completion_handler 是一个函数或函数对象,其函数签名如下
1
void your_completion_handler(const asio::error_code& ec);
这个IO对象将请求转发给IO执行体
IO执行体给操作系统发送一个信号,提示操作系统应该开始一个异步链接
当使用 io_context 当作IO执行体时,程序必须调用 io_context::run() 使异步任务的结果可以被接收并处理。当有未完成的异步操作时,调用 io_context::run() 将被阻塞。
当你开始第一个异步操作时,就应该调用 io_context::run()
在调用 io_context::run() 内部,IO执行体将操作的结果转换为error_code,然后将它传递给 your completion handler