QThreadPool 示例

CDT*_*CDT 5 c++ qt multithreading 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";
}
Run Code Online (Sandbox Code Playgroud)

以上是正确的做法吗?
PS:我waitForDone在参考中看到了,我应该什么时候打电话waitForDone

Pav*_*hov 6

这几乎是正确的,只有一个例外。QRunnable不是一个线程,你不应该调用你的 class MyThreadMyRunnable或者MyTask更正确。

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

waitForDone当您想等到所有可运行对象都被处理时,您应该调用。这取决于您的应用程序的架构。通常是在您创建并启动所有QRunnables 并希望使用它们的结果时。