gpt4 book ai didi

linux - 使用 event_base_loop 添加定时器事件

转载 作者:太空宇宙 更新时间:2023-11-04 13:03:39 25 4
gpt4 key购买 nike

我的 ebase 线程执行以下循环 constexpr int kFlag = EVLOOP_ONCE; while ((res = event_base_loop(ebase_, kFlag)) == 1) { 屈服();

另一个(主)线程添加周期性定时器事件。它在 ebase 线程调用 event_base_loop之后 添加事件。

event* ev = event_new(base(), -1, EV_PERSIST | EV_TIMEOUT, &PeriodicCb, data);
CHECK(0 == event_add(ev, &tv));

但是,我看到这个计时器事件没有运行。如果我将 kFlagEVLOOP_ONCE 更改为 0,它运行良好。我错过了什么?

最佳答案

罪魁祸首在事件基础循环中。正确的代码是这样的:

while ((res = event_base_loop(ebase, EVLOOP_ONCE)) >= 0) {
if (start_cancel)
break;
}

即它应该继续滚动,返回值不小于 0 而不仅仅是 1。

关于linux - 使用 event_base_loop 添加定时器事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33285789/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com