在同一个 io_service 对象上提升异步套接字和线程池

Boost async sockets and thread pool on same io_service object

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

我的问题是在多个套接字上执行 async_read 操作 "block" 来自线程池的线程,或者它们是否启动额外的线程,或者两者都不启动?

都没有。每个 async_read 操作最初都由调用它的线程处理。如果在套接字未就绪的情况下无法进行转发(因为另一方需要发送或接收某些内容),则异步操作 returns 到调用线程。套接字准备情况由 "reactor" 监控,boost 的内部部分使用每个平台支持的最有效机制监控套接字准备情况。当套接字准备就绪并且操作可以向前推进时,"composed operation" 被分派到 I/O 服务以继续操作。当操作完成时,完成它的线程调用完成处理程序。