我可以在属于主线程的QThread中使用waitForReadyRead吗?

时间:2010-02-26 21:42:21

标签: multithreading qt qthread

我有一个包含QUDPsocket的QThread(套接字不是QThread :: run()本地的成员,也许我应该从我正在阅读的内容中改变它)。这个QThread在我的QMainWindow类中实例化,即GUI线程(我没有调用移动到线程)。使用waitForReadyRead是否仍然安全,或者我绝对需要在main.cpp中实例化QThread或调用moveToThread()以使其成为线程安全的。在目前的方式中,我在waitForReadyRead调用中得到了间歇性的双重免费异常(有时候我有时会在3分钟后得到它几天)。

1 个答案:

答案 0 :(得分:1)

查看QUdpSocket的{​​{3}}。有一个注释说明该类是可重入。同样来自Qt documentation

  

...如果一个类可以从多个线程安全地调用它的成员函数,那么它被认为是可重入的,只要每个线程使用该类的不同实例。

因此,为了回答你的问题,QThread的父级是什么并不重要,只要你确保你正在使用的QUdpSocket实例在上下文中被实例化。你正在使用它的线程。