一、libevent库简介

Libevent是一个用于开发可扩展性网络服务器的基于事件驱动(event-driven)模型的网络库。Libevent有几个显著的亮点: 
(1)事件驱动(event-driven),高性能;
(2)轻量级,专注于网络,不如 ACE 那么臃肿庞大; 
(3)源代码相当精炼、易读; 
(4)跨平台,支持 Windows、Linux、*BSD和 Mac Os; 
(5)支持多种 I/O多路复用技术, epoll、poll、dev/poll、select 和kqueue 等; 
(6)支持 I/O,定时器和信号等事件; 
(7)注册事件优先级; 
 Libevent 已经被广泛的应用,作为底层的网络库;比如 memcached、 Vomi t、 Nylon、 Netchat等等。

以上来自百度百科:

二、libevent简单使用

libevent有以下几个主要函数:

(1)初始化libevent库

 struct event_base * event_init(void) /*初始化libevent库, 返回一个struct event_base 指针*/

 struct event_base * event_base_new(void) /*同样是初始化libevent库,官方后出的用来替代evnet_init()的*/
//区别就是前者是线程安全的、而后者是非线程安全的,后者在其官方说明中已经被标志为过时的函数、且建议用前者代替

(2)初始化事件ev,设置回调函数和关注的事件

 void event_set(struct event *ev, int fd, short event, void (*cb)(int, short, void *), void *arg) /*初始化事件,并且设置回调函数和关注的事件*/
/*
ev: 执行要初始化的 event 对象;
fd: 该 event 绑定的“句柄”,对于信号事件,它就是关注的信号;
event:在该 fd 上关注的事件类型,它可以是 EV_READ, EV_WRITE, EV_SIGNAL;
cb: 这是一个函数指针,当 fd 上的事件 event 发生时,调用该函数执行处理,它有三个参数,
调用时由 event_base 负责传入,按顺序,实际上就是 event_set 时的 fd, event 和 arg;
arg: 传递给 cb 函数指针的参数*/

(3)设置event所属的event_base

 event_base_set(base, &ev);

 //指明 event 要注册到哪个 event_base 实例上

(4)event_add添加事件

 event_add(&ev, timeout);
//添加事件并设置超时时间

(5)event_base_dispatch循环等待就绪事件并处理

 event_base_dispatch(base);

未完待续。。。。。。。。。。。。。。。。

最新文章

  1. 多项目并行开发如何做到快速切换——sublime Text3
  2. Puppet权威指南
  3. Windows溢出提权小结
  4. 移动终端app测试点总结
  5. 斑马打印机网卡ZebraNet配置(有线)
  6. git使用中遇到的常见问题
  7. Asp.Net静态资源动态压缩之WebOptimization
  8. smarty模板执行原理
  9. nth-child和nth-of-type的区别
  10. 配置 .vimrc 解决 Vim / gVim 在中文 Windows 下的字符编码问题
  11. 【转】windows 7系统安装与配置Tomcat服务器环境
  12. CodeForces 78D Archer's Shot
  13. 前端jquery validate表单验证框架的使用
  14. 初识Java,猜字游戏
  15. 代码重构--switch的惊恐现身
  16. ios第三方数据请求 UI_15
  17. 如何快速上手Mac
  18. 13.Git分支-变基(rebase)、rebase VS merge
  19. Nginx实现负载均衡的简单案例
  20. [原创] JAVA 递归线程池测试 ExecutorService / ForkJoinPool

热门文章

  1. 客户端状态的存储空间——Session
  2. jquery.query-*.js 操作url
  3. Media Player Classic - HC 源代码分析 1:整体结构
  4. 在AndroidManifest.xml文件中设置Android程序的启动界面方法
  5. HBase学习资源
  6. linux下利用ruby做系统备份与还原
  7. coco2dx添加类报错
  8. win8 JDK环境变量不生效
  9. ROS:使用Qt Creator创建GUI程序(一)
  10. Linux部署集群.NET网站