C++ 在同一io_服务对象上增强异步套接字和线程池

C++ 在同一io_服务对象上增强异步套接字和线程池,c++,multithreading,sockets,boost,boost-asio,C++,Multithreading,Sockets,Boost,Boost Asio,我正在编写一个服务器应用程序 对于多线程,我使用类似于的线程池 在网络接口中,我使用具有异步操作的套接字 所有套接字和线程池使用相同的io_服务对象 我的问题是,在多个套接字上执行async\u read操作是否会“阻止”线程池中的一个线程,或者它们是否会启动其他线程,或者两者都不启动。每个async\u read操作最初由调用它的线程处理。如果在套接字未准备就绪的情况下无法进行转发(因为另一方需要发送或接收某些内容),则异步操作将返回到调用线程。插座就绪由“reactor”监控,react

我正在编写一个服务器应用程序

  • 对于多线程,我使用类似于的线程池
  • 在网络接口中,我使用具有异步操作的套接字
  • 所有套接字和线程池使用相同的io_服务对象

我的问题是,在多个套接字上执行
async\u read
操作是否会“阻止”线程池中的一个线程,或者它们是否会启动其他线程,或者两者都不启动。每个
async\u read
操作最初由调用它的线程处理。如果在套接字未准备就绪的情况下无法进行转发(因为另一方需要发送或接收某些内容),则异步操作将返回到调用线程。插座就绪由“reactor”监控,reactor是boost的一个内部部分,它使用每个平台支持的最有效机制监控插座的就绪情况。当套接字准备就绪并且操作可以向前进行时,将向I/O服务发送一个“组合操作”以继续操作。当操作完成时,完成该操作的线程调用完成处理程序。

两者都不调用。每个
async\u read
操作最初由调用它的线程处理。如果在套接字未准备就绪的情况下无法进行转发(因为另一方需要发送或接收某些内容),则异步操作将返回到调用线程。插座就绪由“reactor”监控,reactor是boost的一个内部部分,它使用每个平台支持的最有效机制监控插座的就绪情况。当套接字准备就绪并且操作可以向前进行时,将向I/O服务发送一个“组合操作”以继续操作。当操作完成时,完成该操作的线程调用完成处理程序。

两者都不调用。每个
async\u read
操作最初由调用它的线程处理。如果在套接字未准备就绪的情况下无法进行转发(因为另一方需要发送或接收某些内容),则异步操作将返回到调用线程。插座就绪由“reactor”监控,reactor是boost的一个内部部分,它使用每个平台支持的最有效机制监控插座的就绪情况。当套接字准备就绪并且操作可以向前进行时,将向I/O服务发送一个“组合操作”以继续操作。当操作完成时,完成该操作的线程调用完成处理程序。

两者都不调用。每个
async\u read
操作最初由调用它的线程处理。如果在套接字未准备就绪的情况下无法进行转发(因为另一方需要发送或接收某些内容),则异步操作将返回到调用线程。插座就绪由“reactor”监控,reactor是boost的一个内部部分,它使用每个平台支持的最有效机制监控插座的就绪情况。当套接字准备就绪并且操作可以向前进行时,将向I/O服务发送一个“组合操作”以继续操作。当操作完成时,完成该操作的线程调用完成处理程序