yanboo's blog » 日志 » QtConcurrent
QtConcurrent
yanboo 发表于 2010-06-10 11:40:00
Qt的多线程支持
Qt通过 平台独立的线程类,线程安全的事件投递,线程间signal-slot连接这几个技术实现多线程支持。 利用这些技术使得Qt能容易地开发出轻巧的多线程应用程序。多线程编程也能解决处理耗时操作时UI不能及时响应的问题。
早期的Qt多线程支持是编译时的一个可选项。从4.0开始,Qt的线程支持始终提供。
Concurrent Programming
名空间QtConcurren提供了一些高级API,使得写多线程程序可以不再使用像互斥、读写锁、等待条件、信号量等低级的多线程命令。用QtConcurrent写的程序可以根据内核数量自动调整线程数。这意味着今天写的应用程序将来可以部署在多核系统上。
QtConcurrent包含处理并行表的API( 函数式编程语言的风格),包括共享内存(非分布式)系统的映射归并和过滤归并的实现,还有GUI程序中管理异步运算的一些类:
- QtConcurrent::map() 对一个容器中的每个元素执行一个函数,修改原始元素。
- QtConcurrent::mapped() 与map()类似,但返回一个新的容器来保存答案,不改变原始列表
- QtConcurrent::mappedReduced() 和mapped()类似,但修改的结果被化简或合并到一个单一结果上。
- QtConcurrent::filter() 依据一个过滤函数的结果把容器中的所有结果移除。
- QtConcurrent::filtered() 与filter()类似,但将过滤结果返回到一个新容器中。
- QtConcurrent::filteredReduced() 与filtered类似,但将过滤结果归并或合并到一个单一结果上。
- QtConcurrent::run() 在另一个线程中运行一个函数
- QFuture 表示异步计算的结果。
- QFutureIterator 允许迭代由QFuture返回的结果。
- QFutureWatcher 允许用Signals-Slots监视QFutrue。
- QFutureSynchronizer 用来自动同步几个QFuture类。
Qt Concurrent supports several STL-compatible container and iterator types, but works best with Qt containers that have random-access iterators, such as QList or QVector. The map and filter functions accept both containers and begin/end iterators.
曾经的这一天...
- » 2007年: 数据结构
收藏:
QQ书签
del.icio.us
