线程中volatile变量

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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值