0
  • 我在单独的线程(pthread)中调用 QTcpSocket 的 waitForReadyRead 方法,
  • 现在,如果从主线程关闭套接字,则应用程序在 waitForReadyRead 方法中崩溃。

我正在使用 waitForReadyRead 超时 = -1。

我也不能在我的实现中使用 qt 信号槽机制

有人可以解释一下上述实现中有什么问题吗

4

1 回答 1

0

来自QTcpThread 的 Qt 文档

注意:该类中的所有函数都是可重入的。

这意味着从多个线程调用一个对象是不安全的(阅读内容以获取更多信息)。即使你让你的代码以某种方式工作,它也可能在旧版本或新版本中崩溃。

如果您真的不能使用信号/插槽,那么您可以在要关闭连接时设置一个标志,并在超时的循环中调用 waitForReadyRead。然后,您可以轮询标志并使用 waitForReadyRead 线程关闭套接字(如果已设置)。

于 2013-01-29T16:09:31.017 回答