QtConcurrent 命名空间提供了高层次的APIs在不使用低层次线程原语(互斥锁、读写锁、等待条件、信号量等)的情况下实现多线程编程。可根据计算机的 CPU 核数,自动调整运行的线程数目。意味着当前所写的应用程序部署到多核系统中时,具有持续的可伸缩性。
QtConcurrent包含函数式的API用于并行处理,其中包括一个基于共享内存(非分布式)系统的MapReduce和FilterReduce实现,以及GUI应用程序中管理异步计算的类:
-
Concurrent Map and Map-Reduce
- Concurrent Filter and Filter-Reduce
- Concurrent Run
- QFuture
- QFutureIterator
- QFutureWatcher
- QFutureSynchronizer
Qt Concurrent支持STL兼容的容器和迭代器类型,兼容性最好的是具有随机访问迭代器的Qt容器,比如QList、QVector。映射和过滤器函数接受容器或者开始/终止迭代器作为参数。
参考