libevent概述
Libevent 是开源社区的一款高性能的 I/O 框架库,使用 Libevent 的著名案例有:高性能的分布式内存对象缓存软件 memcached,Google 浏览器 Chromium 的 Linux 版本。作为一个 I/O 框架库,Libevent 具有如下特点:
◼ 跨平台支持。 Libevent 支持 Linux、Unix 和 Windows。
◼ 统一事件源。Libevent 对 I/O 事件、信号和定时事件提供统一的处理。
◼ 线程安全。Libevent 使用 libevent_pthreads 库来提供线程安全支持。
◼ 基于 Reactor 模式的实现。
使用示例
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <string.h>
#include <unistd.h>
#include <event.h>
#include <signal.h>
void signal_cb(int fd, short event, void *arg)
{
printf("%d Signal triggered\n");
}
void timeout_cb(int fd, short event, void *arg)
{
printf("timeout\n");
}
int main()
{
struct event_base *base = event_init();
struct event *signal_event = evsignal_new(base, SIGINT, signal_cb,NULL);
event_add(signal_event, NULL);
struct timeval tv = {
2, 0 };
struct event *timeout_event = evtimer_new(base, timeout_cb, NULL);
event_add(timeout_event, &tv);
event_base_dispatch(base);
event_free(signal_event);
event_free(timeout_event);
event_bas