账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    从外部改变正在运行的函数内的变量是否可行?
    71
    0

    为了方便讲述,我把问题压缩下。

    有一个界面,当点击开始按钮后,下面的start函数会执行,你可以看到,只要paused一直为假,它就会一直执行下去。因为我给它内部加了一个CoreApplication::processEvents();,所以现在界面还是可以响应的。当我按下暂停按钮后,pause函数就会被调用,接着start也会退出。我试了下这样的做法,没有出现什么问题,但是我不确定这样的做法是否有其他我还没看到的危险。

    int n = 1;
    
    void start()
    {
        while (1)
        {
            if (paused)
                return;
    
            qDebug() << n++;
    
            QElapsedTimer timer;
            timer.start();
            while (timer.elapsed() <= 500)
                QCoreApplication::processEvents(); // 保证界面响应
        }
    }
    
    void pause()
    {
        paused = true;
    }
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部