boost asio 中各种buffer

本文介绍了Boost ASIO库中的不同缓冲区类型,包括const_buffer、mutable_buffer、stream_buffer和dynamic_buffer。重点讨论了const/mutable_buffer序列用于IO操作的发散-收敛操作,stream_buffer在关联输入输出流中的应用,以及dynamic_buffer作为stream_buffer的扩展,提供了更灵活的内存管理。此外,还提到了自由函数buffer和dynamic_buffer的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

buffer 的种类

boost asio中的buffer 种类可以分为 const buffer、 mutable buffer、sream buffer
另外还有 const_buffer_sequence mutable_buffer_sequence

自由函数有 buffer 、 dynamic_buffer 。

const_buffer mutable_buffer

  1. const_buffer 和 mutable_buffer 基本上类似于 一个 std::pair<void* , size_t > 这样一个元组(tuple),可以由 asio::buffer 转换而来(详见 自由函数buffer )
  2. mutable_buffer 可以隐式 转换成 const_buffer ,但是反之却不 亦然。

const/mutable buffer sequence

在IO的读写操作中,会涉及到数据的发散-收敛 操作:

读的时候 ,事先不知道数据的大小,只能先申请一块固定大小的内存,把数据填充到其中,不够的话再申请一块固定大小的内存,再填充数据。。。, 直到读完为止。 是为发散(scatter)
写数据正好相反,可以把多块内存中的数据写到IO 里面,称为收敛(gather )

为此,asio 设计了一种buffer_sequence ,来完成这种操作。
对于 mutable_buffer_sequence, 其包含多个 mutable_buffer, 可以通过迭代器依次便利。
对于 const_buffer_sequence ,也类似。

stream_buffer

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值