Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading 如何使用Qt多线程进行并行列表处理?_Multithreading_Qt5 - Fatal编程技术网

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

Multithreading 如何使用Qt多线程进行并行列表处理?,multithreading,qt5,Multithreading,Qt5,我用qt来制作分析大量数据的软件。数据由单个“优步”订单组成,包含订单时间、开始位置和结束位置等信息,我需要能够评估数据,如绘制随时间变化的需求图 要做到这一点,我必须检查数据的每个记录,并根据其时间戳将其求和到新的数据表中,这需要很长时间,因此我的初始解决方案是使用QtConcurrent::filterReduced来获得我的求和 但是,filter函数不能接受额外的参数来根据我想要的时间间隔过滤数据 我的问题是,有没有另一种快速简便的解决方案?或者我是否需要使用QThread的低级API来

我用qt来制作分析大量数据的软件。数据由单个“优步”订单组成,包含订单时间、开始位置和结束位置等信息,我需要能够评估数据,如绘制随时间变化的需求图

要做到这一点,我必须检查数据的每个记录,并根据其时间戳将其求和到新的数据表中,这需要很长时间,因此我的初始解决方案是使用
QtConcurrent::filterReduced
来获得我的求和

但是,filter函数不能接受额外的参数来根据我想要的时间间隔过滤数据


我的问题是,有没有另一种快速简便的解决方案?或者我是否需要使用QThread的低级API来实现这一点,如果需要,还有关于如何实现这一点的示例/教程吗?

您可以传递包含“参数”的函数对象,而不是传递函数。 类似这样的内容(这里T是您的数据类型):

struct FilterWithTime
{
FilterWithTime(常量QString和filterPredicate)
:m_filterPredicate(filterPredicate){}
typedef bool result_type;
布尔运算符()(常量T和值)
{
…针对过滤器预测的测试值
}
QString m_过滤器预测;
};
QtConcurrent::filterReduced(your-list-of-T,FilterWithTime(QString(“10-12”),YourTransformationObject());
请注意ResultType的显式实例化

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()));