01-多线程
第13章 多线程
一个应用程序一般只有一个线程,一个线程内的操作是顺序执行的,如果有某个比较消耗时间的计算或操作,比如网络通信中的文件传输,在一个线程内操作时,用户界面就可能会冻结而不能及时响应。这种情况下,可以创建一个单独的线程来执行比较消耗时间的操作,并与主线程之间处理好同步与数据交互,这就是多线程应用程序。
Qt为多线程操作提供了完整的支持。QThread是线程类,是实现多线程操作的核心类,一般从QThread继承定义自己的线程类。线程之间的同步是其交互的主要问题,Qt提供了QMutex、QMutexLocker、QReadWriteLock、QwaitCondition、QSemaphore等多种类用于实现线程之间的同步。Qt还有Qt Concurrent模块,提供一些高级的API实现多线程编程而无需使用QMutex、QwaitCondition和QSemaphore等基础操作。使用Qt Concurrent实现的多线程程序可以自动根据处理器内核个数调整线程个数。
本章主要介绍用QThread实现多线程编程的方法,以及用QMutex、QWaitCondition、QSemaphore等实现线程同步的方法。