thrift之TTransport层的内存缓存传输类TMemoryBuffer

本文详细介绍了Thrift的TMemoryBuffer类,它在内存中进行读写操作。文章讨论了TMemoryBuffer的内存缓存策略,包括观察、拷贝和自身拥有三种方式,并解析了其构造函数、内存重置、读写操作以及慢读慢写函数的工作原理。此外,还提到了针对字符串的便捷读写功能。

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

内存缓存是简单的在内存进行读写操作的一种传输,任何时候想在上面写入数据都是放入缓存中,任何时候读操作数据也是来至于缓存。内存缓存的分配使用c语言的malloc类函数,分配的长度是需要长度的两倍,需要考虑这些内存缓存的使用范围。

同样这个类继承至缓存基类TBufferBase,默认的缓存大小是1024(static const uint32_t defaultSize = 1024;),所有的构造函数都调用函数initCommon,这个函数实现如下:

 voidinitCommon(uint8_t* buf, uint32_t size, bool owner, uint32_t wPos) {
    if (buf== NULL && size != 0) {//如果传递过来的buf为null并且size不为0
     assert(owner);//断言这个内存缓存是不是自己所有,不是就报错不继续执行后面的代码了
      buf =(uint8_t*)std::malloc(size);//是自己拥有的内存缓存就自己分配size大小的内存作为缓存
      if(buf == NULL) {
       throw std::bad_alloc();//分配失败抛出异常
      }
    }
    buffer_= buf;//初始化缓存成员变量
   bufferSize_ = size;//大小
 
    rBase_= buffer_;基地址
    rBound_= buffer_ + wPos;//界限
   
    wBase_= b
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蔷薇理想人生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值