QWaitCondition使用困惑

关于QWaitCondition等待超时的困惑
现有如下代码,在子线程中有一耗时操作,主线程通过QWaitCondition设置2秒等待,希望执行结果是要么子线程2秒内执行完成,要么2秒后结束子线程。通过在子线程中使用 sleep(5)模拟耗时操作,模拟超时情况。执行的结果是QWaitCondition.wait 5秒后才返回false,而不是2秒后。请问是否有人遇到类似的情况,或是QWaitCondition使用不当,请指出,谢谢!


#include <QApplication>
#include <QDebug>
#include <QWaitCondition>
#include <QMutex>
#include <QThread>
#include <QEventLoop>
#include <QDateTime>

QWaitCondition condition;
QMutex mutex;

class TestThread : public QThread
{
protected:
    virtual void run()
    {
        mutex.lock();
        sleep(5);
        qDebug() << "test: " << QThread::currentThreadId();
        condition.wakeAll();
        mutex.unlock();
    }
};

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    TestThread test;
    test.start();
    mutex.lock();
    QTime time;
    time.start();
    if(condition.wait(&mutex, 2000))
    {
        qDebug() << "finished";
    }
    else
    {
        qDebug() << "timeout";
    }
    qDebug() << time.elapsed();
    qDebug() << "main: " << QThread::currentThreadId();
    mutex.unlock();

    return a.exec();
}


不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^