Evbuffers:缓冲IO的功能
Libevent 的 evbuffer
功能实现了一个字节队列,针对将数据添加到末尾和从前面删除数据进行了优化。
Evbuffers 通常用于执行缓冲网络 IO 的“缓冲”部分。它们不提供调度 IO 或在 IO 准备好时触发 IO 的功能:这是 bufferevents 所做的功能。
Libevent 的 evbuffer
功能实现了一个字节队列,针对将数据添加到末尾和从前面删除数据进行了优化。
Evbuffers 通常用于执行缓冲网络 IO 的“缓冲”部分。它们不提供调度 IO 或在 IO 准备好时触发 IO 的功能:这是 bufferevents 所做的功能。
这一章节讲述一些bufferevent的高级特性,对初学者来说并不是必须的。如果你刚刚学习如何使用bufferevent,可以跳过本章节。
有时,你需要编写一个与自己通信的网络程序。例如,您可以编写一个程序来通过某个协议建立隧道用户连接,而该程序有时也希望通过该协议建立自己的连接隧道。当然,您可以通过打开与您自己的侦听端口的连接并让您的程序使用自己来实现这一点,但是,让您的程序通过网络堆栈与自己对话会浪费资源。
相反,您可以创建一对成对的bufferevent,以便写入一个的所有字节都被另一个接收(反之亦然),但不使用socket。
大多数时候,除了响应事件之外,应用程序还希望执行一些数据缓冲。例如,当我们想要写入数据时,通常的模式运行如下:
<event2/util.h>
头文件定义了许多函数,您可能会发现这些函数对使用 Libevent 实现可移植应用程序很有帮助。 libevent 在内部使用这些类型和函数。
event是libevent的基本操作单元,每一个event代表一系列条件的集合,包括: