我如何使用一个QObject在这两个的QThread和mainthread以免“glibc的检测双重释放或腐败(fasttop):”?

StackOverflow https://stackoverflow.com/questions/2330329

  •  22-09-2019
  •  | 
  •  

我有一个使用UDP套接字,以写入和在一个循环读取数据报的QThread。该QUdpSocket提供在mainthread创建。如何处理的QObject,我将在这两个的QThread和mainthread使用。也就是它确定有UDP套接字在mainthread和在的QThread使用它?

有帮助吗?

解决方案

通常你应该只允许一个线程来处理每个QObject的。在这种情况下,你可能会想有你的QThread持有和使用该QUdpSocket提供,并且主线程,就永远触摸它(理想情况下,主线程甚至不应该持有一个指向QUdpSocket提供,只是要确定你永远不忘记时,不慎从错误的线程调用一个方法就可以了)。

当您的QThread读取一些数据UDP,它可以做在其上的任何初始处理,然后将数据传送到经由的QApplication()主线程事件后::或经由排队信号/槽连接。

同样,如果你的主线程有一些数据,它希望作为UDP分组而被送出,它不应该调用write()直接在QUdpSocket提供对象上;相反,它应通知的QThread(通过事件后()或排队信号),并让的QThread处理它。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top