QTimer顺序运行,而不是并行运行

时间:2014-11-07 18:14:00

标签: multithreading qt qtimer

我一直在为不同的学生代码设置测试模拟器。它需要在学生代码期间间歇地模拟机器人的移动代码。因此,无论在学生代码期间发生了什么,它都可以运行传感器功能和运动功能(稍后优化的时间)。我写了一堆代码,应该创建正确的线程等,但一个代码总是等待其他代码。然后我简化为基础,但无论我使用什么设置,代码都会按顺序运行。我的代码和输出在下面以最简单的方式放入。

定时器类:

Timer::Timer(int delayLength){
    timer = new QTimer(this);
    connect(timer, SIGNAL(timeout()),this, SLOT(MySlot()));
    qDebug() << "Timer Initialized";
    isTimerRunning = true;
    timer->start(delayLength);
}

void Timer::StopMovement(){
    stoppingMutex.lock();
    isTimerRunning = false;
    stoppingMutex.unlock();
}

void Timer::MySlot(){
    stoppingMutex.lock();
    if(isTimerRunning){
        qDebug() << "Timer Executed";
    }

    else{
        timer->stop();
    }
    stoppingMutex.unlock();
}

主类:

int main(int argc, char *argv[]){
    QApplication app(argc, argv);
    Timer mTimer(100);
    for(int i = 0; i<5;i++){
         QThread::sleep(1);
         qDebug()<< "Slept";
    }
    qDebug() << "Finished";
    return app.exec();
 }

我希望这段代码可以打印很多&#34; Timer Executed&#34;有间歇性的消息实例&#34;睡觉&#34;相反,我得到:

Timer Initialized
Slept
Slept
Slept
Slept
Slept
Finished
Timer Executed
Timer Executed
Timer Executed
Timer Executed
(...)

0 个答案:

没有答案
相关问题