要一步一步构架起整个体系,
来日方长。
系统调用级别的EPOLL和函数库LIBEVENT之间,大体关系应该是如何呢?
网上有说法:
~~~~~~~~~~~~~~
libevent对底层多路复用机制的封装通过两个数据结构eventop和evbase,都在event_base结构体中使用。
epollops(eventop类型的变量)封装了epoll的事件处理系统调用,evbase(epollop)封装了epoll相关的变量。
struct evepoll { struct event *evread; struct event *evwrite; }; struct epollop { struct evepoll *fds; // fds指向evepoll数组,数组索引就是fd大小,数组元素就是读写event int nfds; // fd的个数 struct epoll_event *events; int nevents; int epfd; }; const struct eventop epollops = { "epoll", epoll_init, epoll_add, epoll_del, epoll_dispatch, epoll_dealloc, 1 /* need reinit */ };
时间: 2024-10-24 08:20:20