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