从另一个线程中断event_base_dispatch
Break event_base_dispatch from another thread
我可以调用在另一个线程中运行的event_base_loopbreak
到int event_base_dispatch(struct event_base *base)
吗?
可以从另一个线程用event_base_loopbreak
停止event_base_dispatch
。只需在创建event_base
之前调用evthread_use_pthreads
或evthread_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(),这可以成功退出事件循环
相关文章:
- C++核心准则 C35 对于接口类"A base class destructor should be either public and virtual, or protected and nonv
- 构造函数采用 Base&不被调用
- 将sharet_ptr<Derived>转换为shared_ptr<Base>
- 将 BASE 派生类存储在同一容器中
- 避免矢量中的对象切片<Base><shared_ptr>
- 从 std<Derived>::shared_ptr 的向量返回 std::shared_ptr<Base>
- 如何从unique_ptr返回unique_ptr的引用<Derived><Base>?
- 当初始值设定项是基类名时'initializer does not name a non-static data member or base class'错误
- 如何将unique_ptr<derived>*转换为<base>unique_ptr*?
- <Base> <Derived> 具有相同原始指针共享引用的 shared_ptr 和 shared_ptr 实例是否计数?
- std::boost::asio::p ost / dispatch 使用哪个io_context?
- 从 Base 引用对象调用派生类的成员
- 两个成员,在Base中默认初始化,可能在Derived中非默认初始化
- 从"<Base>std::unique_ptr"创建"ClassType<std::unique_ptr>"时出现编译错误<Derived>
- C++ - 打印派生类对象的矢量<base*> 元素
- 为什么在此示例中从unique_ptr自动向上转换<derived>到unique_ptr<base>失败?
- 如何在派生类中不显式调用base::func()的情况下从基类执行虚拟函数
- Visual Studio MFC C++ "CFormView" "base class"下拉列表中缺少
- 尝试应用肖恩父母谈话"inheritance is the base class of evil"中的模式
- 派生对象调用的 Base 方法的模板推导