供水开发建设公司网站,企业信息查询平台官网,wordpress的底部找不到版权信息,腰椎间盘突出压迫神经腿疼怎么治Libevent 是一个用C语言编写的、轻量级的开源高性能事件通知库#xff0c;主要有以下几个亮点#xff1a;事件驱动#xff08; event-driven#xff09;#xff0c;高性能;轻量级#xff0c;专注于网络#xff0c;不如 ACE 那么臃肿庞大#xff1b;源代码相当精炼、易读… Libevent 是一个用C语言编写的、轻量级的开源高性能事件通知库主要有以下几个亮点事件驱动 event-driven高性能;轻量级专注于网络不如 ACE 那么臃肿庞大源代码相当精炼、易读跨平台支持 Windows、 Linux、 *BSD 和 Mac Os支持多种 I/O 多路复用技术 epoll、 poll、 dev/poll、 select 和 kqueue 等支持 I/O定时器和信号等事件注册事件优先级。 libevent的流程可以分为三步定义框架注册事件启动事件循环epoll检测事件是否发生发生的时候通知子线程调用回调函数//此过程会阻塞下图为编写的框架
// 创建框架 struct event_base* base NULL;base event_base_new();// 添加事件struct event* ev NULL;ev event_new(base, fd, EV_READ | EV_PERSIST, read_cb, NULL);event_add(ev, NULL);// 事件循环event_base_dispatch(base);// 释放资源event_free(ev);event_base_free(base);close(fd);return 0;
} Reactor事件源描述符、Reactor 框架、多路复用机制和事件处理程序
事件源可以理解为我们的文件描述符多路复用机制是我们的IO模型selectpollepoll事件处理程序理解为回调函数。