1

我在 pthread 有一份工作,它准备了一个用于绘图的数据集。然后我需要在主窗口中显示这些数据,比如图表。如何将数据集从线程传输到主窗口中的渲染小部件。

我使用插槽和信号。当我的线程发出信号的频率高于插槽接收信号的频率时会发生什么。

问题是我QMap*用来将数据集从一个线程传输到另一个线程。而且我需要确信插槽完成了它的工作,我可以在工作线程中更新这个地图。

4

1 回答 1

1

首先,我假设您的意思是您在“QThread”中工作,而不是 pthread(如 posix 线程)。在这种情况下,您可以使用信号和插槽将数据传递给主线程进行渲染。

“比插槽可以接收的频率更高”的频率是多少?您是否尝试过并且遇到问题,或者只是推测您认为可能出错的事情?如果您确实在发送太多信号时遇到问题,请在处理线程上批量处理数据并在计时器上定期发送批处理。

至于确保 slot 完成它的工作,你可以使用 QMutex 来控制每个线程中对 QMap 的访问。QMutex 的 Qt 帮助清楚地解释了它的用法;锁定互斥锁,完成工作,然后解锁。

于 2013-05-22T08:00:30.310 回答