QThread:为何start会自动调用run执行线程代码
在Qt中,使用QThread可以方便地进行多线程编程,其中start()函数是一个重要的方法,它可以启动一个新的线程并自动调用run()函数。本文将分析start()函数的实现原理,并解释为什么它能够自动调用run()函数。
首先,我们来看一下QThread的定义:
class QThread : public QObject
{
Q_OBJECT
public:
explicit QThread(QObject *parent = nullptr);
~QThread();
// 线程状态
enum Priority {
IdlePriority,
LowestPriority,
LowPriority,
NormalPriority,
HighPriority,
HighestPriority,
TimeCriticalPriority,
InheritPriority
};
void setPriority(Priority priority);
Priority priority() const;
enum PriorityBoost {
NoPriorityBoost,
AutomaticPriorityBoost
};
void setPriorityBoost(PriorityBoost priorityBoost);
PriorityBoost pri