#include <QCoreApplication>
#include <QThread>
#include <QSharedPointer>
#include <QDebug>
class WorkerThread : public QThread
{
public:
WorkerThread(QObject *parent = nullptr) : QThread(parent) {}
protected:
void run() override
{
// 在这里执行线程任务
for(int i = 0; i < 5; i++) {
qDebug() << "Thread" << QThread::currentThreadId() << "Iteration" << i;
QThread::sleep(1);
}
}
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// 创建一个指向线程对象的QSharedPointer指针
QSharedPointer<QThread> threadPtr(new WorkerThread());
// 启动线程对象
threadPtr->start();
// 等待线程执行完任务
threadPtr->wait();
// 手动释放线程对象的内存
connect(threadPtr.data(), &QThread::finished, threadPtr.data(), &QThread::deleteLater);
return a.exec();
}
该示例代码创建了一个WorkerThread线程对象,并使用QSharedPointer来管理该对象的生命周期。在main函数中,首先创建了一个指向WorkerThread对象的QSharedPointer指针,然后启动线程对象,并等待线程执行完任务。最后,通过将线程对象的成品信号槽连接到deleteLater()方法来手动释放线程对象的内存。
当程序运行时,会输出如下信息:
Thread 0x7f89040c2040 Iteration 0
Thread 0x7f89040c2040 Iteration 1
Thread 0x7f89040c2040 Iteration 2
Thread 0x7f89040c2040 Iteration 3
Thread 0x7f89040c2040 Iteration 4