0%

官方文档学习手册

异步操作流程

  • 初始化连接操作

    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

感谢老板支持!敬礼(^^ゞ