Qt 多线程

Qt 以独立于平台的线程类、张贴事件的线程安全方式及跨线程的信号/槽连接形式,提供线程支持。这使开发可移植多线程 Qt 应用程序和利用多处理器机器,变得很容易。多线程编程也是在不冻结应用程序用户界面情况下,用于履行耗时操作的有用范式。

早期版本的 Qt 提供在不支持线程的情况下构建库的选项。从 Qt 4.0 起,线程始终被启用。

话题:

这些文章假定读者拥有有关多线程应用程序的基本知识。

线程类

这些类有关线程化应用程序。

并发过滤和过滤缩减

从序列选择值并平行地组合它们所有

并发映射和映射缩减

从序列变换值并平行地组合它们所有

并发运行

在单独线程中运行任务的简单办法

并发任务

在单独线程中运行任务的可配置办法

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() 的结果

QAtomicInteger::qYieldCpu()

注意: Qt 的线程类是采用本机线程 API 实现的 (如,Win32 和 PThreads)。因此,它们可以与相同本机 API 线程一起使用。