Qt 以独立于平台的线程类、张贴事件的线程安全方式及跨线程的信号/槽连接形式,提供线程支持。这使开发可移植多线程 Qt 应用程序和利用多处理器机器,变得很容易。多线程编程也是在不冻结应用程序用户界面情况下,用于履行耗时操作的有用范式。
早期版本的 Qt 提供在不支持线程的情况下构建库的选项。从 Qt 4.0 起,线程始终被启用。
This document is intended for an audience that has knowledge of, and experience with, multithreaded applications. If you are new to threading see our Recommended Reading list:
这些类有关线程化应用程序。
| Asynchronous Run | The <QtConcurrentRun> header provides a way to run a function in a separate thread. |
| 并发过滤和过滤缩减 | The <QtConcurrentFilter> header provides concurrent Filter and Filter-Reduce. |
| 并发映射和映射缩减 | The <QtConcurrentMap> header provides concurrent Map and MapReduce. |
| QAtomicInt | 于整数上独立于平台的原子操作 |
| QAtomicPointer | 为指针提供独立于平台的原子操作的模板类 |
| QFuture | 表示异步计算的结果 |
| QFutureSynchronizer | 简化 QFuture 同步的方便类 |
| QFutureWatcher | 允许监视 QFuture 使用信号和插槽 |
| QMutex | 在线程之间串行化访问 |
| QMutexLocker | 简化锁定和解锁互斥的方便类 |
| QReadLocker | 用于读取访问的锁定和解锁的读写锁的方便简化类 |
| QReadWriteLock | 读/写锁定 |
| QRunnable | 用于所有可运行对象的基类 |
| QSemaphore | 通用计数信号量 |
| QThread | 独立于平台的线程管理办法 |
| QThreadPool | 管理一批 QThread |
| QThreadStorage | 每线程数据存储 |
| QWaitCondition | 用于同步线程的条件变量 |
| QWriteLocker | 用于写入访问的锁定和解锁的读写锁的方便简化类 |
| QtConcurrent | 使之无需使用低级线程原语就能编写多线程程序的高级 API |
注意: Qt 的线程类是采用本机线程 API 实现的 (如,Win32 和 PThreads)。因此,它们可以与相同本机 API 线程一起使用。