加载中…
个人资料
莫一剑
莫一剑
  • 博客等级:
  • 博客积分:0
  • 博客访问:1,071,797
  • 关注人气:104
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

多线程切换后执行语句的不确定性

(2022-03-14 16:35:39)
分类: 嵌入式
无线键盘加号键按下
void Mode1Wx::keyPlus()
{
    qDebug()<<"plus press";
    pressKey=Key_Plus;
    ui->forwardBtn->mpress();
}
无线键盘减号键按下
void Mode1Wx::keyMinus()
{
    qDebug()<<"minus press";
    pressKey=Key_Minus;
    ui->backwardBtn->mpress();
}
无线键盘按键释放
void Mode1Wx::keyRelease()
{
    qDebug()<<"key release"<<pressKey;
    if(pressKey==Key_Plus)
    {
        qDebug()<<"plus release";
        ui->forwardBtn->mrelease();
        pressKey=0;
    }
    else if(pressKey==Key_Minus)
    {
        qDebug()<<"minus release";
        ui->backwardBtn->mrelease();
        pressKey=0;
    }
}

void FeedPushButton::mousePressEvent(QMouseEvent *event)
{
    FunLib::playAudio("default.wav");//多线程播放语音
    QPushButton::mousePressEvent(event);
    qDebug()<<"timer1 start";
    timer1->start(500);
    emit feedPushButtonPress();

}

void FeedPushButton::mouseReleaseEvent(QMouseEvent *event)
{
    QPushButton::mouseReleaseEvent(event);
    timer1->stop();
    timer2->stop();
    qDebug()<<"timer12 stop";

}
按住减号键马上抬起,先收到键盘按下信号,后收到键盘抬起信号,但是有时候出现先打印timer12 stop,后打印timer1 start的问题。
原因:多线程的问题,按下的时候播放语音是个多线程,播放过程中,线程切换可能会执行qDebug()<<"timer1 start";也可能会执行 qDebug()<<"timer12 stop";



0

阅读 收藏 喜欢 打印举报/Report
后一篇:e
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有