代码之家  ›  专栏  ›  技术社区  ›  cube

如何中断在QThread中运行的select/pselect

  •  0
  • cube  · 技术社区  · 14 年前

    这将很容易与阻塞读取(2),但我需要能够停止线程从外面没有等待太久。

    如果我使用pthread,我将使用pselect和 pthread_kill(thread_id, some_signal) ,但QThread没有 似乎有类似的方法。在这个项目中添加对pthread的依赖性似乎并不优雅。

    我也不想使用其他丑陋的方法,比如不断尝试用相对较小的超时从套接字读取数据。

    编辑:套接字不是TCP,而是bluetooth L2CAP。

    3 回复  |  直到 14 年前
        1
  •  1
  •   cube    14 年前

    一个不太优雅但简单有效的解决方案: 创建一个管道并让select等待管道或我的套接字。这样我就可以通过在管道上写点什么来停止等待。

        2
  •  1
  •   CHW mmoment    9 年前

    您可以使用qtcsocket的异步接口,而不是自己处理线程。查看 Fortune Client example .

        3
  •  0
  •   CHW mmoment    9 年前

    你可以发一个信号给 terminate() QThread的插槽。这将根据操作系统调度策略停止线程。