我正在寻找关于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
?
答案 0 :(得分:4)
除了一个例外,这几乎是正确的。 QRunnable
不是主题,您不应该致电您的班级MyThread
。 MyRunnable
或MyTask
更为正确。
请注意,您的代码与documentation page上的示例几乎相同。文档是简明示例的最佳来源。
如果要等到处理完所有可运行的邮件,则应调用waitForDone
。这取决于您的应用程序的架构。通常是在您创建并启动所有QRunnable
并希望使用其结果时。