copy_on_write_buffer主要实现的功能简单概括就是: 读时共享,写时复制.

首先我们来看下,对应类的继承层次结构:


FinalRefCountedObject:
只提供引用计数功能

BufferT:
官网解释的十分清楚了:

// Basic buffer class, can be grown and shrunk dynamically.
// Unlike std::string/vector, does not initialize data when increasing size.
// If “ZeroOnFree” is true, any memory is explicitly cleared before releasing.
// The type alias “ZeroOnFreeBuffer” below should be used instead of setting
// “ZeroOnFree” in the template manually to “true”.

CopyOnWriteBuffer:
本质上只是利用Buffer的能力,来实现对Buffer业务能力的扩展,比如:引入了引用计数。

这里一旦引入了引用计数,那么便意味着,Buffer的生命周期归计数器来管理,它们之间的关系就是属于关联关系中的聚合关系了.

那么为何要引入引用计数呢?

我们来考虑一个服务器很频繁的运用场景-数据分发。


如果不采用引用计数,很多情况下,我么需要对数据产生多个副本,就会频繁的在内存中new/memcpy/delete,如果拥有了引用计数的功能,那么我们便可以在发送了最后一个数据后,安全的对数据进行回收 ,这个也就是我们所说的读时共享功能.

实现方式:

 // Share the data with an existing buffer.CopyOnWriteBuffer(const CopyOnWriteBuffer& buf);

写时复制懒得说了,本质就是对Buffer的函数调用实现。

webrtc rtc_base Copy_on_write_Buffe类功能剖析相关推荐

  1. boost::units模块实现确保最小的 + - * / 单元类功能齐全的测试程序

    boost::units模块实现确保最小的 + - * / 单元类功能齐全的测试程序 实现功能 C++实现代码 实现功能 boost::units模块实现确保最小的 + - * / 单元类功能齐全的测 ...

  2. JDK 6中新增的Java Console类功能概览

    转载自  JDK 6中新增的Java Console类功能概览 JDK 6中提供了java.io.Console类专用来访问基于字符的控制台设备.如果你的Java程序要与Windows下的cmd或者L ...

  3. 深入struts2(二) ---stuts2长处和主要包、类功能

    1.1     Struts2 上节已讲.struts2在webwork基础发展起来的mvc框架.MVC框架相信一般码农都比較了解,这里不再重说. 在这里只对于一下struts1,struts2做了哪 ...

  4. 蓝鲸智云功能剖析介绍

    蓝鲸功能剖析&介绍 概要: 简单看了一下蓝鲸平台的内容. 整个架构都是依赖了一个长连接的agent (tcp)能够通过这个agent来实现很多功能.如: push 脚本给collector p ...

  5. 关于Vue开发即时聊天类功能的经验分享(其实并不复杂)

    当下即时通讯已经成为大多数产品的主要功能,最近在工作过程中需要初步开发一个具有基础通讯功能的客服功能.根据此开发功能的过程,总结了一些开发经验与方法(使用的SDK不同,实现方法也会有比较大的差异).之 ...

  6. MathNet.Numerics主要类功能简述

    MathNet.Numerics主要类功能简述 MathNet.Numerics是一个.NET的开源数学库,包含了.NET平台上的面向对象数字计算的基础类.类似 NMath ,但 NMath 是收费的 ...

  7. php同时抢购 代码,php如何处理抢购类功能的高并发请求

    在高并发请求下容易参数两个问题 1.数据出错,导致产品超卖. 2.频繁操作数据库,导致性能下降. 本文主要和大家详细介绍了php处理抢购类功能的高并发请求,具有一定的参考价值,感兴趣的小伙伴们可以参考 ...

  8. 微信网页开发 分享功能剖析

    微信网页开发 分享功能剖析 步骤一:绑定域名 先登录微信公众平台进入"公众号设置"的"功能设置"里填写"JS接口安全域名". 步骤二:引入J ...

  9. C#中关于增强类功能的几种方式

    C#中关于增强类功能的几种方式 本文主要讲解如何利用C#语言自身的特性来对一个类的功能进行丰富与增强,便于拓展现有项目的一些功能. 拓展方法 扩展方法被定义为静态方法,通过实例方法语法进行调用.方法的 ...

最新文章

  1. Python记录-基础语法入门
  2. 编写python程序的步骤_编写python程序和运行.py文件的方法步骤
  3. Git 分布式版本管理
  4. 怎么查看jre版本_javac和java版本不一致问题
  5. ping与telnet的区别
  6. PHP的uniqid
  7. 华为防火墙ftp_FTP被动模式访问问题
  8. oracle查看角色内容,oracle创建,查看用户和角色,用户角色赋权
  9. c语言通过定义变量实现对,C语言中定义变量“#X”,X##, ##X 和“##X##”用意
  10. python钓鱼评论爬取
  11. oracle扩充字段长度的SQL语句,sql语句修改字段长度
  12. IDEA 个人私藏插件
  13. Java反编译工具-luyten
  14. linux 版本iomete,Linux系统下Iometer的使用方法
  15. 微信小程序内容组件图标 icon
  16. SQL中分组,排序,分组排序
  17. 快递市场定价 到底有何影响
  18. python 步数_用python如何修改微信和支付宝每天走路的步数
  19. 正态分布概率密度函数的推导
  20. 前端学习笔记:CSS学习之选择器篇

热门文章

  1. 九龙证券|科创板做市借券正式上线 首日4只股票被借出
  2. BLACKHOLE的BINLOG实现
  3. 深度优先搜索(DFS)与广度优先搜索(BFS)详解
  4. Python图算法之深度优先搜索
  5. Yoast SEO Premium插件下载,为你的网站实现卓越的SEO优化!
  6. MySQL导入数据库脚本
  7. 安卓调用系统相机录像并上传到后端服务器
  8. 专升本英语——语法知识——高频语法——第一节 时态和语态——主动表被动【学习笔记】
  9. 平面设计师工资一般多少,什么人适合学平面设计:夏雨老师
  10. 二本/三本的计算机学生 应不应该考研?