【发布时间】:2014-01-27 18:40:08
【问题描述】:
我正在基于HTTP Server 3 示例为Mac OS X 做一个Boost asio 网络程序。它使用 async_read_some 从 TCP 套接字异步读取数据。
问题是我的处理程序返回的数据量非常少。我给它一个 64k 的缓冲区,但它通常返回大约 1448 字节,这是一个完整的以太网数据包的大小。当有大量数据传输时,这反过来会导致 CPU 使用率很高,我无法想象所有这些内核到用户空间的跳转都是有效的。
以如此小的块获取数据是否正常?
有没有办法告诉 TCP 堆栈或 asio 框架在返回之前尝试在内核中缓冲更多数据?
【问题讨论】:
-
看看这个帖子是否能帮到你:stackoverflow.com/questions/4933610/…
标签: c++ macos networking boost boost-asio