- 1
- 2
- 3
- 4
- 5
libevent的evbuffer_add_reference引用而不复制的智慧.docx
资料介绍
libevent 的 evbuffer_add_reference:引用而不复制的智慧
大数据的拷贝代价
在网络编程里,经常要把一块数据加入发送缓冲。如果用复制的方式(evbuffer_add),数据会被拷贝一份,占用时间和内存。对大数据或频繁操作,拷贝开销很大。
libevent 提供了 evbuffer_add_reference,用"引用"代替"复制",把一块已存在的内存直接挂进缓冲,避免拷贝。这篇文章讲这个机制。
evbuffer_add_reference 的作用
evbuffer_add_reference 把一块内存"引用"进缓冲,而不复制。
它记录这段内存的地址和长度,把它作为一个引用链节点挂进 evbuffer。数据不拷贝,只是"借用"了这块内存。
这样,拼接大包时没有额外的数据拷贝,节省时间和内存。
引用 vs 复制
evbuffer_add(复制)和 evbuffer_add_reference(引用)的区别。
复制:把数据拷贝到 evbuffer 自己的内存,之后可以修改或释放原数据。
引用:只记录数据地址,不拷贝,之后不能修改或过早释放原数据,直到引用被解除。
选择哪种,看数据的生命周期需求。需要拷贝独立使用,用 add;借用已有内存避免拷贝,用 add_reference。
部分文件列表
| 文件名 | 大小 |
| libevent的evbuffer_add_reference引用而不复制的智慧.docx | 37K |
最新上传
-
21ic小能手 打赏5.00元 1天前
资料:磁编码器开源方案
-
21ic小能手 打赏5.00元 1天前
-
21ic小能手 打赏5.00元 1天前
-
江岚 打赏20.00元 3天前
-
江岚 打赏50.00元 3天前
-
江岚 打赏20.00元 3天前
-
江岚 打赏10.00元 3天前
-
21ic小能手 打赏10.00元 3天前
-
21ic小能手 打赏8.00元 3天前
-
21ic小能手 打赏8.00元 3天前
-
21ic小能手 打赏5.00元 3天前
-
21ic小能手 打赏3.00元 3天前
-
tangyu1 打赏1.00元 3天前
-
jjjjkkkkk 打赏1.00元 3天前
-
emlimei 打赏1.00元 3天前
-
21ic小能手 打赏5.00元 3天前
-
21ic小能手 打赏3.00元 3天前
资料:低频功率放大器的设计.
-
21ic小能手 打赏3.00元 3天前
-
21ic小能手 打赏3.00元 3天前
-
21ic小能手 打赏3.00元 3天前
-
21ic小能手 打赏3.00元 3天前
-
21ic小能手 打赏5.00元 3天前
资料:51单片机数字频率计
-
21ic小能手 打赏5.00元 3天前
-
21ic小能手 打赏5.00元 3天前
-
21ic小能手 打赏5.00元 3天前
-
13573902396 打赏1.00元 3天前
-
21下载积分 打赏310.00元 3天前
用户:江岚
-
21下载积分 打赏310.00元 3天前
用户:潇潇江南
-
21下载积分 打赏60.00元 3天前
用户:他山之石可攻玉
-
21下载积分 打赏310.00元 3天前
用户:小猫做电路
-
21下载积分 打赏210.00元 3天前
用户:zhengdai
-
21下载积分 打赏210.00元 3天前
用户:w993263495
-
21下载积分 打赏10.00元 3天前
用户:烟雨
-
21下载积分 打赏60.00元 3天前
用户:gsy幸运
-
21下载积分 打赏70.00元 3天前
用户:铁蛋锅
-
21下载积分 打赏65.00元 3天前
用户:xzxbybd
-
21下载积分 打赏60.00元 3天前
用户:jh0355
-
21下载积分 打赏60.00元 3天前
用户:w178191520
-
21下载积分 打赏20.00元 3天前
用户:jh03551
-
21下载积分 打赏20.00元 3天前
用户:sun2152




全部评论(0)