Qt 之 Concurrent Map 和 Map-Reduce

简述

QtConcurrent::map()、QtConcurrent::mapped() 和 QtConcurrent::mappedReduced() 函数对一个序列中(例如:QList、QVector)的项目并行地进行计算。QtConcurrent::map() 就地修改一个序列,QtConcurrent::mapped() 返回一个包含修改内容的新序列,QtConcurrent::mappedReduced() 返回一个单一的结果。

这些函数是 Qt之Concurrent框架 的一部分。

上述的每个函数都有一个 blocking 变量,其返回的是最终结果,而不是一个 QFuture。可以用和异步变量同样的方式来使用它们。

QList images = ...;

// 每次调用都会被阻塞,直到整个操作完成
QList future = QtConcurrent::blockingMapped(images, scaled);

QtConcurrent::blockingMap(images, scale);

QImage collage = QtConcurrent::blockingMappedReduced(images, scaled, addToCollage);

注意:上述的结果类型不是 QFuture 对象,而是实际结果类型(在这种情况下,是 QList和 QImage)。

|

你可能感兴趣的:(Qt,中级进阶,Qt,Qt线程,Qt并发,QtConcurre,Map-Reduce)