日期:2014-05-16  浏览次数:20632 次

求教libevent的难题
小弟接触libevent不久,遇到一个麻烦难题,请大牛赐教,先谢过
正常流程
init
event_set
event_add
event_dispatch();
自我感觉
event_dispatch();是关键,相当于不断loop

是不是说,event_dispatch();在一个进程必须而且只能有一个,而且放在最后。如果event_dispatch();之后我还想add一个event怎么办?比如定时器,我需要不断的新加event,该怎么解决,如何进行动态的增加,必须是开始就设定好,然后loop吗?一旦event_dispatch();就没有回头路吗?



------解决方案--------------------
连epoll都没用过的,想理解libevent有点牵强。

event_loop里某个fd发生事件后回调你注册的函数,你的函数此时给epoll注册其他fd的事件不是很正常么。用过select/epoll就有概念了,libevent只是封装了IO事件触发,实际的I/O与程序逻辑是用户注册的回调函数来做的,libevent只是帮你监听,并在回调函数时告诉你发生事件的fd以及注册时提供的userdata,还有发生了什么事件。
------解决方案--------------------
探讨

有点思路了,可以注册一个每秒发生一次的函数,这个函数用来检测db的变化,然后进行动态添加,这样对吗?
再次感谢!