sockets - Boost Asio,io_service每个内核仅处理一个套接字

标签 sockets concurrency boost-asio boost-thread

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

  • 服务器:从线程池(每个内核一个线程)运行io_service.run(),接受连接并从套接字读取数据是异步完成的。
  • 客户端:每个客户端都将连接并向服务器发送一个大文件(〜500MB)。

  • 问题:所有客户端都已连接到服务器(客户端数量>服务器核心数量); io_service每个线程仅处理一个连接/套接字,而直到处理的连接之一完成时,其他套接字的数据才被处理。

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

    最佳答案

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

    关于sockets - Boost Asio,io_service每个内核仅处理一个套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5136951/

    相关文章:

    java - 如何立即更新线程之间的共享变量

    c++ - 使用 boost::asio::streambuf 作为 istream 和数组作为 string_view 是否安全?

    android - 为什么我的缓存机制没有按预期工作?

    c++ - 崩溃 : terminate called after throwing an instance of 'std::system_error' what(): Resource deadlock avoided

    c++ - 如何安全地取消 Boost ASIO 异步接受操作?

    java - Android FileChannel 在不同的 AsyncTask 中读写失败

    c++ - 阻止 UDP 数据包在接收缓冲区快满时被部分截断

    c - 如何在 freebsd 中监听原始套接字并提取数据

    node.js - 将 socket.io 更新到 1.0 版本时出现多个轮询请求(HTTP 错误 400)

    Java 并发 : Synchronized(this) => and this. wait() 和 this.notify()