event 非正常退出主循环

本文详细探讨了libevent库中event_loopbreak和event_base_loopexit两个函数用于退出主循环的区别。event_loopbreak设置退出标记,而event_base_loopexit在指定时间后停止循环,若无延迟则立即停止。当主循环正执行回调时,event_base_loopexit会在当前回调执行完毕后退出,而event_loopbreak会执行完所有就绪事件。总结了两者在不同场景下的应用策略。
摘要由CSDN通过智能技术生成
event_loopbreak 函数
int
event_loopbreak(void)
{
   
    return (event_base_loopbreak(current_base));
}
int
event_base_loopbreak(struct event_base *event_base)
{
   
    if (event_base == NULL)
        return (-1);

    event_base->event_break = 1;
    return (0);
}

event_loopbreak就是直接设置event_base中的event_break退出标记.

event_base_loopexit 函数
int
event_base_loopexit(struct event_base *event_base, const struct timeval *tv)
{
   
    return (event_base_once(event_base, -1, EV_TIMEOUT, event_loopexit_cb,
            event_base, tv));
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值