【发布时间】:2026-01-24 14:15:01
【问题描述】:
在此SSL client example 中,默认缓冲区大小为 1K=1024 字节。我可以增加多少有任何实际限制吗?如果我将缓冲区设置为 100 MB 之类的,它会正常工作而不会出现不可预见的问题吗?
注意缓冲区不仅仅是保留的大小;它也传递给read() 和write()。由于大小限制,这些函数在多大时会面临问题?是否存在这样的限制?我可以想象,我可以write() 至少有一个明确的限制。
【问题讨论】:
-
到无限,甚至更远。它被填满的可能性很小。一个好的缓冲区大小是 4096 字节。在不经常给操作系统发痒和不破坏 L1 缓存之间取得了很好的平衡。
-
通常情况下,应用程序协议的特性有助于引导一个最佳保留缓冲区大小。另外请注意,示例的
max_length仅用于本地缓冲区保留和对应用程序协议(getline())实施限制。传递给读写操作的缓冲区大小是计算出来的请求长度,可能小于max_length。 -
@TannerSansbury 感谢您提供信息!
标签: c++ boost buffer boost-asio