求教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,还有发生了什么事件。
[解决办法]