我可以将event_base_loopbreak
调用到另一个帖子中运行的int event_base_dispatch(struct event_base *base)
吗?
答案 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_threads
或event_base
来启用多线程支持。