文章目录
前言
终于算是写到一个比较核心的功能了,对于一个项目,多线程是必不可少的,当然有的也不需要,不是说做项目就一定要使用多线程,不过一般复杂点的项目,多线程是必不可少的,所以从本章开始,将详解Qt多线程应用,以及pthread的应用详解,C++11多线程等都会涉及,不过还是以Qt中的QThread为主,下面讲解QThread的概念。
概念讲解
一个应用程序一般只有一个线程,一个线程内的操作是顺序执行的,如果有某个比较消耗时间的计算或操作,比如网络通信中的文件传输,在一个线程内操作时,用户界面就可能会冻结而不能及时响应。这种情况下,可以创建一个单独的线程来执行比较消耗时间的操作,并与主线程之间处理好同步与数据交互,这就是多线程应用程序。
Qt为多线程操作提供了完整的支持。QThread 是线程类,是实现多线程操作的核心类,一 般从QThread继承定义自己的线程类。线程之间的同步是其交互的主要问题,Qt 提供了QMutex、QMutexLocker、QReadWriteLock、 QwaitCondition、 QSemaphore 等多种类用于实现线程之间的同步。Qt还有QtConcurrent模块,提供一些高级的API实现多线程编程而无需使用QMutex、QWaitCondition和QSemaphore等基础操作。使用Qt Concurrent实现的多线程程序可以自动根据处理器内核个数调整线程个数。</