Qt提供线程支持的方式:平台无关的线程类,线程安全的消息通知方式,跨线程的信号插槽连接。 这使得开发可移植的多线程Qt应用程序和利用多处理器机器变得容易。 多线程编程也是执行耗时的操作而不冻结应用程序用户界面的常用方法。
Qt的早期版本提供了一个在没有线程支持的情况下编译Qt的选项。 从Qt 4.0开始,Qt编译始终启用线程支持。
主题
这些文章假定读者具有有关多线程应用程序的基本知识。
- 线程类
- Qt中的多线程技术
- 同步线程
- 重入和线程安全
- 线程和QObject
- Qt模块中的线程支持
线程类
下面些类与线程应用程序有关。
QAtomicInteger | 独立于平台的整数原子操作 |
QAtomicPointer | 模板类,它对指针提供与平台无关的原子操作 |
QFuture | 表示异步计算的结果 |
QFutureSynchronizer | 简化QFuture同步的便利类 |
QFutureWatcher | 允许使用信号和插槽监控QFuture |
QMutex | 线程之间的访问序列化 |
QMutexLocker | 便利类,简化了互斥锁的加锁和解锁 |
QRecursiveMutex | 线程之间的访问序列化 |
QReadLocker | 便利类,简化了读写锁读操作的加锁和解锁 |
QReadWriteLock | 读写锁 |
QWriteLocker | 便利类,简化了读写锁写操作的加锁和解锁 |
QRunnable | 所有可运行对象的基类 |
QSemaphore | 通用计数信号量 |
QSemaphoreReleaser | QSemaphore::release()调用的异常安全延迟 |
QThread | 独立于平台的线程管理方式 |
QThreadPool | 管理QThreads的集合 |
QThreadStorage | 线程数据存储 |
QWaitCondition | 用于同步线程的条件变量 |
QtConcurrent | 高级API,无需使用低级线程原语就可以编写多线程程序 |
Concurrent Filter and Filter-Reduce | |
Concurrent Map and Map-Reduce | |
Concurrent Run |
注意:Qt的线程类是通过本机线程API实现的。例如Win32和pthreads。因此,它们可以与相同的本机API的线程一起使用。