multithreading - 如何使用Qt多线程进行并行列表处理?

标签 multithreading qt5

我正在使用qt制作分析大量数据的软件。数据由单独的“Uber”订单组成,并包含诸如订单时间,开始位置和结束位置之类的信息,我需要能够评估数据,例如绘制随时间变化的需求图。
为此,我必须检查数据的每条记录,并根据其时间戳将其汇总到新的数据表中,这需要很长时间,因此我的初始解决方案是使用QtConcurrent::filterReduced来获取我的总和。
但是,筛选器函数不能使用额外的参数来根据我想要的时间间隔筛选数据。
我的问题是,针对这种问题是否还有另一种快速简便的解决方案?还是我需要为此使用QThread的低级API,如果有,那么有关如何实现该目标的任何示例/教程?

最佳答案

除了传递函数外,还可以传递包含“参数”的函数对象。
这样的事情(这里T是您的数据类型):

struct FilterWithTime
{
    FilterWithTime(const QString &filterPredicate)
    : m_filterPredicate(filterPredicate) { }

    typedef bool result_type;

    bool operator()(const T &value)
    {
        ... test value against filterPredicate
    }

    QString m_filterPredicate;
};

QtConcurrent::filterReduced<ResultType>(your-list-of-T, FilterWithTime(QString("10-12"), YourTransformationObject()));
注意使用ResultType的显式实例化!

关于multithreading - 如何使用Qt多线程进行并行列表处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65310472/

相关文章:

Qt5.4 for WP8.1 QFileDialog 不起作用

c++ - 如何计算 QString Qt 中的特定字符

c++ - 在按钮上启动线程

java - 如何使用 "implements Runnable"调用特定套接字线程中的方法?

Java:如果加入线程不起作用:中断还是继续?

Python如何从QDateTimeEdit中提取字符串

c++ - QML 和 C++ 之间的合适配置

c++ - 模仿基于 QApplication::palette() 的颜色样式行为

java - 如何杀死队列中等待执行Java方法的线程

multithreading - 调试核心文件时找到主线程