class Thread : public QThread
{
Q_OBJECT
public:Thread();
void setMessage(const QString& message);
void stop(); //供外部(界面线程)调用
protected:void run(); //线程函数
private:QString messageStr;
volatile bool stopped;
};
//线程函数==
void Thread::run()
{
while (!stopped) // 线程 执行访问volatile变量会不停访问最新值,而不是寄存器中保存的值
{
qDebug()<<messageStr;
}
stopped = false;
}
// 主线程 会调用这个函数来设置变量值,当变量设置后,若没有volatile修饰,则线程函数可能不会去取刚设置的值,而继续使用原来的值,所以需要使用 volatile 修饰变量
void Thread::stop()
{
stopped = true;
}
线程中volatile变量
最新推荐文章于 2023-10-15 18:04:40 发布