从另一个线程中断event_base_dispatch

时间:2014-09-16 07:42:19

标签: c++ libevent

我可以将event_base_loopbreak调用到另一个帖子中运行的int event_base_dispatch(struct event_base *base)吗?

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

参考How to break out libevent's dispatch loop,我必须在启动事件循环之前设置一个计时器事件,并轮询退出标志以从事件的回调中调用event_base_loopbreak(),这可以成功退出事件循环

答案 2 :(得分:0)

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