Libevent 源码阅读--典型应用中的函数调用关系

本文深入解析Libevent库的典型应用,展示如何通过该库实现事件驱动的网络编程。从创建事件基座到设置事件监听,再到事件循环的调度与执行,逐步剖析其内部机制。特别聚焦于epoll_wait系统调用在事件驱动模型中的关键作用。
摘要由CSDN通过智能技术生成

一次典型应用的函数调用

struct event ev;
struct event_base *base;
struct event_base *base = event_base_new();
event_set(&ev, fd, EV_READ|EV_PERSIST, callback_fn, (void *)arg);
		|
		|__> event_assign(ev, current_base, fd, events, callback, arg)
					|
					|____>  ev->ev_base = base;
                                                ev->ev_callback = callback;
						ev->ev_arg = arg;
						ev->ev_fd = fd;
event_base_dispatch(base);
	   |
	   |__>event_base_loop(base,0)
				|
				|__> res = evsel->dispatch(base, tv_p);
				|				|
				|				|_____>epoll_wait
				|
                                |__>event_process_active (base)
					                |
		                            |__>event_process_active_single_queue				                    		                        
                                           |
				                    	   |__>
                                               evcb_callback =*ev->ev_callback;
                                               evcb_callback(ev->ev_fd, res, ev->ev_arg);
	                                                |
	                                                |___> accept

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值