libevent源码分析--I/O 定时 信号 被处理的安排

关于这几个事件对应的初何时何地初始化、何时何地事件被添加、何时何地添加到激活队列、处理流程:

一、i/o事件

       I/O事件的初始化是在event_set函数中被初始化

       I/O事件的添加是在event_add函数中进行

二、定时事件

       定时事件的初始化是在event_add函数中进行,这个函数初始化了一些I/O和定时事件

      定时事件添加到激活队列中是使用timeout_process(),函数是在event_dispatch中被调用,在回调函数event_wait返回以后进行

三、信号事件

       信号事件的初始化在epoll_init,这个init作为回调被event_init()函数调用,在epoll_init函数中调用了evsignal_init()函数来初始化和处理信号事件相关的操作,设置了evsignal_info结构体中的内部socket作为一个被监听的事件,在这个event中负责recv一个字节,这样就可以知道信号事件被触发!

    信号事件的添加在epoll_add函数中,在epoll_add函数中,如果是信号事件,就直接调用evsignal_add函数,如果是别的事件,将一个epoll_event和这个event相互关联即可

    在evsignal_add函数中,设置一个回调函数evsignal_handler,这个函数可以使得在用户自定义的信号为sig的信号事件发生时evsignal_handler被调用,evsignal_handler函数只是使用套接字发送一个字节,结束者就是evsignal_init函数中event_set的套接字。然后将evsignal_info结构体中的内部socket通过调用event_add函数添加到所要监听的队列中,
</

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值