Boost Asio,io_service每个核心只处理一个套接字

时间:2011-02-27 23:53:15

标签: sockets concurrency boost-asio boost-thread

我正在使用Boost Asio编写服务器应用程序:

  1. 服务器:从线程池(每个核心一个线程)运行io_service.run(),接受连接&从套接字读取数据是异步完成的。
  2. 客户端:每个客户端连接并向服务器发送重文件(~500MB)。
  3. 问题:所有客户端都连接到服务器(客户端数量>服务器核心数量); io_service每个线程只处理一个连接/套接字,而其他套接字的数据在处理完的一个连接完成之前不会被处理。

    我希望所有连接套接字的数据同时由io_service线程池处理?

1 个答案:

答案 0 :(得分:1)

预期的行为是什么?如果您有io_service个线程调用n,则n只能调用io_service::run()个处理程序。如果未完成的异步操作数大于n,则其处理程序将在io_service队列中等待,直到线程可以自由调用它们为止。