
Libevent
文章平均质量分 88
sdoyuxuan
高产似母猪 一月20篇~ ~
展开
-
Libevent 官方文档英文 intro - 1 总结
阻塞I/O Linux下的默认socket都是阻塞文件描述符,那么我们写网络程序的所有调用函数,都是阻塞的这样性能十分之低。 最主要的问题是,如果可能同时有多个连接到来的时候,阻塞I/O根本无法正常工作/* This won't work. */char buf[1024];int i, n;while (i_still_want_to_read()) { for...原创 2018-03-22 11:10:26 · 201 阅读 · 0 评论 -
副本控制协议
副本协议 副本控制协议指按特定的协议流程控制副本数据的读写行为,使得副本满足一定的可用性和一致性要求的分布式协议。副本控制协议要具有一定的对抗异常能力,从而使得系统具有一定的可靠性,同时还得提供一定的一致性级别。中心化副本控制协议 中心化副本控制协议指的是由中心节点协调所有节点的更新与维护各个副本之间的一致性。优点把关于分布式上的并发问题转换为了一个单机的并发问题,缺点当中心节点异常的时...原创 2018-09-28 18:41:55 · 404 阅读 · 0 评论 -
BufferEvent 源码剖析
文件结构bufferevent.h 里面包含了其bufferevent操作的函数bufferevent_struct.h 里面包含了bufferevent结构体的定义原创 2018-08-24 18:38:23 · 285 阅读 · 0 评论 -
memcached网络模型
网络模型图原创 2018-08-27 11:55:53 · 325 阅读 · 0 评论 -
BufferEvent
bufferevent 由于我们在网络通信中有很多输入输出的场景,所以Libevent也提供了相应的bufferevent。这些bufferevent由一个底层的传输对象(socket),一个ReadBuufer,一个WriteBuffer构成。 与之前普通的event不同的是bufferevent只有当它的传输对象(fd)读取到了足够多的数据后才会调用它的回调函数。 buffe...原创 2018-08-13 21:44:20 · 3172 阅读 · 2 评论 -
Evbuffer
Evbuffer Evbuffer是用一个队列实现的,这个队列具有高效的尾插和头删。Evbuffer是用来提高网络 I/O的效率的一个工具,它的源码在 event2/buffer.h中。创建或者释放一个evbufferstruct evbuffer *evbuffer_new(void);void evbuffer_free(struct evbuffer *buf);...原创 2018-08-14 19:21:42 · 1201 阅读 · 0 评论 -
event_base
event_base 介绍 一个event_base就是一个Reactor框架。我们在调用任何Libevent的函数前,我们都是需要先申请 event_base 结构体。对于一个event_base结构来说,它会保存一系列的event事件并且以轮训的方式去关注每一个事件,去查看哪一个事件是就绪的。(事件就绪可以从unp第6章 I/O模型中有讲到) 如果一个 event_base设置了使...原创 2018-08-10 19:57:32 · 3198 阅读 · 0 评论 -
event源码
event对象所描述的实体文件信号超时 libevent所描述的对象也就是这三个文件、信号、超时。那么在event_add函数中,也会把相应的event结构体插入到相应的队列中。其中IO队列是方便当同一文件描述符就绪时,把该文件描述符相关的event第一时间找到,信号队列也一样也是为了当同一信号发生时把所有event找到,超时事件则由超时堆来管理。...原创 2018-04-21 21:10:02 · 161 阅读 · 0 评论 -
event
概念 Libevent的基本操作单元就是event。每一个事件都代表一列情况: 1.文件描述符就绪 2.时间器就绪 3.信号就绪 4.用户事件就绪 这几个事件有相同的生命周期,一旦通过调用event_new 设置 event 并与 event_base相关联后,event 事件就会被初始化。初始化后,当我们使用这个event的时候,需要先把它注册到event_base中,通过even...原创 2018-04-17 18:23:51 · 402 阅读 · 0 评论 -
EventLoop
active 何为活跃就是事件就绪,如果事件就绪 event循坏会把该事件标志为就绪。可设置的event循坏 int event_base_loop(struct event_base *base, int flags)#define EVLOOP_ONCE 0x01 // 代表就循坏1次#define EVLOOP_NONBLOCK ...原创 2018-04-17 16:36:37 · 314 阅读 · 0 评论 -
Libevnt 多线程设置
多线程设置 Libevent 的多线程不是指多个线程都进入一个event_base,而是指多个线程调用相应api 操作event_base。 在Libevent 2.0 之前,Libevent不支持lock所以也就不是线程安全的,Libevent2.0之后开始支持锁支持多线程了,在Linux如果使用到了Pthread库就可以通过调用evthread_use_pthreads接口,Win32...原创 2019-01-02 11:03:37 · 447 阅读 · 0 评论