gpt4 book ai didi

c++ - Boost asio async_read_some 返回少量数据

转载 作者:太空宇宙 更新时间:2023-11-04 11:41:07 26 4
gpt4 key购买 nike

我正在为基于 HTTP Server 3 的 Mac OS X 开发一个 Boost asio 网络程序例子。它使用 async_read_some 从 TCP 套接字异步读取数据。

问题是我的处理程序返回了非常少量的数据。我给它一个 64k 缓冲区,但它通常返回大约 1448 字节,这是一个完整以太网数据包的大小。当有大量数据传输时,这反过来会导致 CPU 使用率很高,我无法想象所有这些内核到用户空间的跳转都是有效的。

以如此小的 block 获取数据是否正常?

有没有办法告诉 TCP 堆栈或 asio 框架在返回之前尝试在内核中缓冲更多数据?

最佳答案

这真的很简单:一旦事情变得繁忙,您将开始立即获取大量数据。仅此而已。是的,在系统未加载时以如此小的 block 获取数据是非常正常的。这实际上是期望的行为:您正在利用低系统负载来获得极好的延迟。必要时,事情会从那个点优雅地降级。

关于c++ - Boost asio async_read_some 返回少量数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21388929/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com