发出信号花费的时间太长

时间:2019-12-05 13:54:10

标签: c++ multithreading qt signals slots

在我的应用程序中,我需要使用4个线程。有一个GUI线程(仅处理GUI相关的东西),第二个线程(传感器线程)负责从网络套接字接收和过滤一些传感器数据,第三个线程(控制线程)和第四个线程(AI线程)处理一些繁重的工作。为了在它们之间进行通信,我正在使用信号和插槽。

第二个线程完成对最后一个接收到的数据的过滤后,它会向其他3个线程发出一个带有数据的信号。

我的问题是,Sensor线程发出信号要花费5毫秒以上的时间(时序对于该应用程序至关重要)。但是,如果未连接AI和控制线程,则不会发生这种情况。

我已经在使用QueuedConnection(默认)并将数据作为const指针传递。数据是我正在使用的一个类的对象,其大小约为1.2Kb(使用sizeof(ClassData)获得)

插槽不进行大量计算,只是更新当前线程中的数据。

发出数据的代码如下:

void filterData()
{
    filteredData = filter(networkData); // Filters the network data

    // Emits a signal with the filtered data

    QElapsedTimer measureTime; measureTime.start();
    emit sendFilteredData(filteredData);
    qDebug() << measureTime.nsecsElapsed()/1e6; // Shows measured time in ms    
}

0 个答案:

没有答案