Boost C++ 库

……是世界上最受推崇、设计最精湛的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu, C++ Coding Standards

定制立即完成 - Boost C++ 函数库
PrevUpHomeNext

associated_immediate_executor 关联器特性,连同 bind_immediate_executor 函数,提供了在异步操作即时完成时自定义完成处理程序执行的能力。

当支持的操作即时完成(即在发起函数内)时,会获得关联的即时执行器,并通过该执行器传递完成处理程序,如同在该执行器上使用 boost::asio::dispatch 一样。默认情况下,即时执行器会通过操作的 I/O 执行器,如同使用 boost::asio::post 一样传递完成处理程序。

例如,为了允许对 async_read_some 操作的完成处理程序进行递归调用,我们可以指定即时完成通过 system_executor 进行传递。

my_socket.async_read_some(my_buffer,
    bind_immediate_executor(
      system_executor(),
      [](error_code e, size_t n)
      {
        // ...
      }
    )
  );

当前支持即时执行的情况包括:基于反应堆的套接字和描述符上的异步操作,以及通道上的异步操作。

注意: 在启用完成处理程序的即时执行时,必须谨慎确保不会发生无限递归和堆栈溢出。此外,即时完成的使用可能会影响完成处理程序调度的公平性,可能导致其他待处理工作被饿死。

参见

associated_immediate_executor, bind_immediate_executor


PrevUpHomeNext