线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
计算机程序常编写专门的workhorse线程执行密集计算,从而提高了程序的执行效率。
今天主要介绍Qt线程四种不同的使用方式,下面结合案例具体说明一下。
一、继承 QThread, 重写 run() 方法,在run()方法中进行费时操作。
这个方法在很多教程上都可以了解到,大家第一个接触的Qt线程操作应该就是它。它的优点是便于理解,缺点是操作繁琐而且需要自己处理线程安全。下面是一个简单的示例。
class WorkerThread : public QThread
{
Q_OBJECT
void run() override {
QString result;
/* ... here is the expensive or blocking operation ... */
/**
while(true)
{
qInfo() << "xxxxx";
}
*/
emit resultReady(result);
}
signals:
void resultReady(const QString&);
};
// ----
void CcObject::startWorkThread()
{
auto *workerThread = new WorkerThread(this);
connect(workerThread, &WorkerThread::resultReady, this, &CcObject::handleResults);
connect(workerThread, &Wor