0

我有一个 QThread,它从套接字读取并在有任何可用数据时发送信号(QT 信号)。阻塞读取(2)会很容易,但我需要能够从外部停止线程而无需等待太久。

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

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

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

4

3 回答 3

1

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

于 2010-09-07T14:11:40.440 回答
1

一个不太优雅但简单且有效的解决方案:创建一个管道并让 select 等待管道或我的套接字。这样,我可以随时通过向管道写入内容来停止等待。

于 2010-09-08T13:07:05.690 回答
0

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

于 2010-09-07T13:43:48.467 回答