QThreadPool示例

时间:2013-06-21 13:00:37

标签: c++ multithreading qt threadpool

我正在寻找关于QThreadPool使用的简明示例。这是我使用它的方式:

QThreadPool *thread_pool = QThreadPool::globalInstance();
MyThread *thread = new MyThread();
thread_pool->start(thread);


class MyThread : public QRunnable {
public:
    MyThread();
    ~MyThread();
    void run();
};

void MyThread::run()
{
    qDebug() << "MyThread";
}

以上是正确的做法吗? PS:我在参考文献中看到waitForDone,我何时应该致电waitForDone

1 个答案:

答案 0 :(得分:4)

除了一个例外,这几乎是正确的。 QRunnable不是主题,您不应该致电您的班级MyThreadMyRunnableMyTask更为正确。

请注意,您的代码与documentation page上的示例几乎相同。文档是简明示例的最佳来源。

如果要等到处理完所有可运行的邮件,则应调用waitForDone。这取决于您的应用程序的架构。通常是在您创建并启动所有QRunnable并希望使用其结果时。