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

标签 multithreading qt qthread

我有一个包含QUDPsocket的QThread(套接字不是QThread::run()的本地成员,也许我应该从我正在阅读的内容中更改它)。这个QThread是在我的QMainWindow类(即GUI线程)中实例化的(我没有在调用move to thread)。使用waitForReadyRead是否仍然安全,还是我绝对需要在main.cpp中实例化QThread或调用moveToThread()使其成为线程安全的。我正在以目前的方式在对waitForReadyRead的调用中收到间歇性的双重释放异常(有时三天后有时我几天都没有得到它)​​。

最佳答案

看看Qt documentationQUdpSocket。那里有一条注释说明类(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/

相关文章:

java - 在 Java 中多次运行命令行程序 - 这是正确的吗?

c# - 使用线程分离 UI

java - 安卓 : Updating thread causes GC to run a ton

c++ - 每秒在 QGraphicsView 中移动图像

c++ - "this"指针变为空 c++

python - threading.current_thread() 中的 Dummy 是什么?

Java 静态同步

c++ - 如何将枚举类传递给 QML?

qt - 在运行时调整 QDialog 的大小

qt - Item::contains 总是返回真