我有一个包含QUDPsocket的QThread(套接字不是QThread::run()的本地成员,也许我应该从我正在阅读的内容中更改它)。这个QThread是在我的QMainWindow类(即GUI线程)中实例化的(我没有在调用move to thread)。使用waitForReadyRead是否仍然安全,还是我绝对需要在main.cpp中实例化QThread或调用moveToThread()使其成为线程安全的。我正在以目前的方式在对waitForReadyRead的调用中收到间歇性的双重释放异常(有时三天后有时我几天都没有得到它)。
最佳答案
看看Qt documentation的QUdpSocket
。那里有一条注释说明类(class)是可重入的。也来自Qt documentation:
...a class is said to be reentrant if its member functions can be called safely from multiple threads, as long as each thread uses a different instance of the class.
因此,要回答您的问题,只要确保您使用的
QThread
实例在使用它的线程的上下文中实例化,QUdpSocket
的父对象是什么并不重要。
关于multithreading - 我可以在属于主线程的QThread中使用waitForReadyRead吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2345026/