brpc-iobuf

iobuf:

block:

 197 struct IOBuf::Block {
 198     butil::atomic<int> nshared;
 199     uint16_t flags;
 200     uint16_t abi_check;  // original cap, never be zero.
 201     uint32_t size;
 202     uint32_t cap;
 203     Block* portal_next; //常规不触发,某些场景使用
 207     char* data;

一个共享块,分配block后,持有之,这是一块大内存,头部是block元数据,后面是data,目前感觉data指针多余;通过nshared共享,该值内存顺序是memory_order_relaxed,只保证当前操作的原子性,不考虑线程间的同步,其他线程可能读到新值,也可能读到旧值。

构造iobuf,magic默认0,因此默认使用bigview:

 86     struct BigView {
 87         int32_t magic;
 88         uint32_t start;//ref头
 89         BlockRef* refs;
 90         uint32_t nref;//ref个数
 91         uint32_t cap_mask;
 92         size_t nbytes;//总字节数
        };


 74     struct BlockRef {
 75         // NOTICE: first bit of `offset' is shared with BigView::start
 76         uint32_t offset;
 77      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

MyObject-C

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

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

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

打赏作者

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

抵扣说明:

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

余额充值