QThreadPool奇怪的异常

时间:2014-07-17 10:21:50

标签: c++ qt exception

我正在“搞乱”线程池,我注意到一个奇怪的异常。所以我在这里问你:我正确使用这个物体吗?或者您认为这只是一个错误或虚拟警告? 这里是。我用QThreadPool实现了一个基本的例子(它几乎与文档中的那个一样:http://qt-project.org/doc/qt-4.8/thread-basics.html#example-1-using-the-thread-pool)。

#include <QCoreApplication>
#include <QTimer>
#include <QRunnable>
#include <QThreadPool>
#include <QDebug>
class Work : public QRunnable
{
public:
    void run()
    {
        qDebug() << "Hello from thread " << QThread::currentThread();
    }
};

int main(int argc, char *argv[])
{
    QCoreApplication app(argc, argv);
    Work work;
    work.setAutoDelete(false);
    QThreadPool *threadPool = QThreadPool::globalInstance();
    threadPool->start(&work);
    qDebug() << "hello from GUI thread " << QThread::currentThread();
    threadPool->waitForDone();
    QTimer::singleShot(3000, &app, SLOT(quit()));
    return app.exec();
}

如果我在状态栏中启动调试器,它会显示“正在运行”和“调试器已完成”等消息。它告诉我:

Exception at 0x75f6812f, code: 0x406d1388: Startup complete, flags 0x0 (first chance) in KERNELBASE!RaiseException

该程序有效,因为它写的是正确的东西而且没有挂起,但这条消息对我来说很奇怪。

我做错了吗?

谢谢

1 个答案:

答案 0 :(得分:1)

这是第一次机会异常。它显然被代码捕获并处理,因为否则你的应用程序会崩溃。所以这不是问题。