【问题标题】:How to stop epoll_wait?如何停止 epoll_wait?
【发布时间】:2020-02-09 11:44:01
【问题描述】:

我刚开始在 Linux 中编码,需要使用 epoll 将我的 Win 服务器代码移植到这里。 我不知道如何阻止epoll_wait

epoll 循环在单独的线程中运行,主函数处理控制台命令。输入“退出”命令后,我需要停止服务器。简单地关闭主套接字没有任何效果。那么在这种情况下如何正确停止 epoll(可能会导致 epoll_wait 在所有线程中返回错误)?

【问题讨论】:

  • 如果您正在退出应用程序,这并不重要。当主线程从主线程退出/返回时,整个进程(包括所有线程)将被操作系统终止,无论它们在做什么。
  • @JesperJuhl,但我想加入调用epoll_wait 的所有正在运行的线程

标签: c++ epoll


【解决方案1】:

通常,您将一个特殊的文件描述符放在文件描述符的epoll 列表中。 eventfdpipe 是很好的候选人。每当您需要中断epoll_wait 时,您会向该文件描述符发出信号,并在事件处理循环中检查该文件描述符作为循环退出条件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-05
    • 1970-01-01
    • 1970-01-01
    • 2015-12-08
    • 2015-06-26
    • 2012-06-20
    • 2018-07-05
    • 2021-11-08
    相关资源
    最近更新 更多