libev源代码分析--基本的接口函数

ibev的代码很简练 但对于看他代码的人 简直就是噩梦 到处都是宏 宏还嵌套 于是我在看libev代码时 对其进行了还原 去掉了宏

1struct ev_io {
2int fd;
3int events;
4struct ev_watcher_list *list;
5int active;
6int pending;
7int priority;
8void* data;
9void (*cb)(structev_loop *loop, structev_io *w,int revents);
10};

ev_io在触发EV_READ或者是EV_WRITE被调用

1struct ev_timer {
2ev_tstamp at;
3ev_tstamp repeat;
4int active;
5int pending;
6int priority;
7void* data;
8void (*cb)(structev_loop *loop, structev_timer *w,int revents);
9};

ev_timer在特定的时间调用,并周期性进行,其基于单调时钟
(PS:单调时钟:此时间来源会严格的线性递增,一般linux会使用系统正常运行时间来表示,也就是从开机开始算起) 触发事件EV_TIMEOUT

1struct ev_periodic {
2ev_tstamp offset;
3ev_tstamp interval;
4ev_tstamp (*reschedule_cb)(structev_periodic *w, ev_tstamp now);
5ev_tstamp at;
6int active;
7int pending;
8int priority;
9void* data;
10void (*cb)(structev_loop *loop, structev_periodic *w,int revents);
11};

ev_periodic在特定的时间调用,可能会在定期间隔反复调用,其基于UTC时间
(PS:UTC:协调时间 也就是从1970年1月1日00:00:00开始记时) 触发事件EV_PERIODIC

1struct ev_signal {
2int signum;
3struct ev_watcher_list *next;
4int active;
5int pending;
6int priority;
7void* data;
8void (*cb)(structev_loop *loop, structev_signal *w,int revents);
9};

ev_signal当接收到指定的信号时调用 触发事件EV_SIGNAL

1struct ev_child {
2int flag;
3int pid;
4int rpid;
5int rstatus;
6struct ev_watcher_list *next;
7int acti


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部