Qt 以独立于平台的线程类、张贴事件的线程安全方式及跨线程的信号/槽连接形式,提供线程支持。这使开发可移植多线程 Qt 应用程序和利用多处理器机器,变得很容易。多线程编程也是在不冻结应用程序用户界面情况下,用于履行耗时操作的有用范式。
早期版本的 Qt 提供在不支持线程的情况下构建库的选项。从 Qt 4.0 起,线程始终被启用。
这些文章假定读者拥有有关多线程应用程序的基本知识。
这些类有关线程化应用程序。
并发过滤和过滤缩减 | Selecting values from a sequence and combining them, all in parallel |
并发映射和映射缩减 | Transforming values from a sequence and combining them, all in parallel |
并发运行 | A simple way to run a task in a separate thread |
并发任务 | A configurable way to run a task in a separate thread |
QAtomicInteger | 于整数上独立于平台的原子操作 |
QAtomicPointer | 为指针提供独立于平台的原子操作的模板类 |
QFuture | 表示异步计算的结果 |
QFutureSynchronizer | 简化 QFuture 同步的方便类 |
QFutureWatcher | 允许监视 QFuture 使用信号和插槽 |
QMutex | 在线程之间串行化访问 |
QMutexLocker | 简化锁定和解锁互斥的方便类 |
QPromise | 存储由 QFuture 访问的计算结果的办法 |
QReadLocker | 用于读取访问的锁定和解锁的读写锁的方便简化类 |
QReadWriteLock | 读/写锁定 |
QRecursiveMutex | 在线程之间串行化访问 |
QRunnable | 用于所有可运行对象的基类 |
QSemaphore | 通用计数信号量 |
QSemaphoreReleaser | 异常安全的 QSemaphore::release() 调用的延迟 |
QThread | 独立于平台的线程管理办法 |
QThreadPool | 管理一批 QThread |
QThreadStorage | 每线程数据存储 |
QWaitCondition | 用于同步线程的条件变量 |
QWriteLocker | 用于写入访问的锁定和解锁的读写锁的方便简化类 |
QtConcurrent | 使之无需使用低级线程原语就能编写多线程程序的高级 API |
QtConcurrent::QTaskBuilder | 用于调节任务参数 |
QtFuture::WhenAnyResult | QtFuture::WhenAnyResult 用于表示 QtFuture::whenAny() 的结果 |
注意: Qt 的线程类是采用本机线程 API 实现的 (如,Win32 和 PThreads)。因此,它们可以与相同本机 API 线程一起使用。
Qt 中的多线程技术