草庐IT

Webrtc从理论到实践八: 官方demo源码走读(peerconnection_client)(上)

系列文章目录Webrtc从理论到实践一:初识Webrtc从理论到实践二:架构Webrtc从理论到实践三:角色Webrtc从理论到实践四:通信Webrtc从理论到实践五:编译webrtc源码Webrtc从理论到实践六:Webrtc官方demo运行Webrtc从理论到实践七:官方demo源码走读(peerconnection_server)文章目录系列文章目录前言一、peerconnection_client目录结构二、PeerConnection_client类图三、时序图MainWnd对象创建PeerConnectionClient和Conductor对象创建开启Windows事件循环点击Co

FFmpeg源码走读之内存管理模型

1FFmpeg内存管理原理数据包管理过程中当数据转移到新的数据包时存在两种操作一种是数据包之间相互独立,当新创建一份数据包时,需要将原来的数据重新申请一个数据空间并且将数据拷贝到新的数据包中,具体过程如下图所示。这种数据包的管理优势是在于数据之间相互独立,不会存在数据干扰的问题,但是缺点也很明显就是消耗的内存大大增加,同时数据之间的拷贝也是耗时的。另一种内存管理的方式是,只新增数据包对象,用于管理数据对象,对于数据本身采用同一个内存空间进行管理,当所有的内存引用为0时释放这片内存空间,具体如下图所示。这种方式的优势就是数据占用内存最小化,同时大大减少数据拷贝的耗时问题;缺点是增加了内存管理的难

FFmpeg源码走读之内存管理模型

1FFmpeg内存管理原理数据包管理过程中当数据转移到新的数据包时存在两种操作一种是数据包之间相互独立,当新创建一份数据包时,需要将原来的数据重新申请一个数据空间并且将数据拷贝到新的数据包中,具体过程如下图所示。这种数据包的管理优势是在于数据之间相互独立,不会存在数据干扰的问题,但是缺点也很明显就是消耗的内存大大增加,同时数据之间的拷贝也是耗时的。另一种内存管理的方式是,只新增数据包对象,用于管理数据对象,对于数据本身采用同一个内存空间进行管理,当所有的内存引用为0时释放这片内存空间,具体如下图所示。这种方式的优势就是数据占用内存最小化,同时大大减少数据拷贝的耗时问题;缺点是增加了内存管理的难

[Raft共识算法] Dragonboat Log Replication 代码走读

DragonboatLogReplication代码走读Dragonboat是一个开源的高性能Go实现的Raft共识协议实现.具有良好的性能和久经社区检验的鲁棒性,机遇巧合,接触到.因此决定结合Raft博士论文走读其源码.今天带来Raft中三大核心之一的日志复制LogReplication的代码走读.DragonboatLogReplication代码实现结构![Dragonboatlogreplication](/Users/tanghangyun/Documents/Dragonboatlogreplication.png)Dragonboat中的网络接口调用主要在node.go文件中实现

[Raft共识算法] Dragonboat Log Replication 代码走读

DragonboatLogReplication代码走读Dragonboat是一个开源的高性能Go实现的Raft共识协议实现.具有良好的性能和久经社区检验的鲁棒性,机遇巧合,接触到.因此决定结合Raft博士论文走读其源码.今天带来Raft中三大核心之一的日志复制LogReplication的代码走读.DragonboatLogReplication代码实现结构![Dragonboatlogreplication](/Users/tanghangyun/Documents/Dragonboatlogreplication.png)Dragonboat中的网络接口调用主要在node.go文件中实现