从另一个线程中断event_base_dispatch

Break event_base_dispatch from another thread

本文关键字:base dispatch event 中断 另一个 线程      更新时间:2023-10-16

我可以调用在另一个线程中运行的event_base_loopbreakint event_base_dispatch(struct event_base *base)吗?

可以从另一个线程用event_base_loopbreak停止event_base_dispatch。只需在创建event_base之前调用evthread_use_pthreadsevthread_use_windows_threads即可启用多线程支持。

从事件循环外部调用event_base_loopbreak实际上没有效果,在循环内部,event_base_loopbreak不会从循环中断。因此,将event_base_loopbreak调用到在另一个线程中运行的int event_base_dispatch(struct event_base*base)应该不会有任何效果。

我也遇到了同样的问题,无论从其他线程调用event_base_loopbreak()还是event_add()都不起作用。

参考如何破解libevent';在调度循环中,我必须在启动事件循环之前设置一个计时器事件,并轮询退出标志以从事件的回调中调用event_base_loopbreak(),这可以成功退出事件循环