一般的应用程序只有一个线程。一个线程内的多个任务是顺序执行的。其中如果有某个任务比较耗时,比如文件读写或者网络通信,这时用户界面就可能因无法及时响应用户操作而出现“卡顿”现象,降低用户体验。为了解决这个问题,通常会创建一个子线程,也叫工作线程或辅助线程,来执行那些相对耗时的任务,而运行用户界面的主线程,也叫UI线程,则继续与用户保持顺畅的交互。这就要用到所谓多线程编程技术。
Qt全面支持多线程编程。它用QThread类表示线程。该类是实现多线程编程的核心基类。程序编写者只需从QThread类派生出自己的子类,并在该子类中编写执行线程任务的代码即可。另外,在某些特定的场景下,程序中并发运行的多个线程,可能需要保持某种程度的同步。为此,Qt提供了QMutex、QMutexLocker、QReadWriteLock、QWaitCondition、QSemaphore等类,以满足这方面的需要。