【问题标题】:QThreadPool exampleQThreadPool 示例
【发布时间】:2013-06-18 14:56:00
【问题描述】:

我正在寻找一些关于使用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

【问题讨论】:

    标签: c++ multithreading qt threadpool


    【解决方案1】:

    这几乎是正确的,只有一个例外。 QRunnable 不是线程,你不应该调用你的类MyThreadMyRunnableMyTask 更正确。

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

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

    【讨论】:

    • waitforDone 是真的删除了“线程池中的所有线程”还是真的清空了任务队列中的所有QRunnable 任务?
    猜你喜欢
    • 2016-12-21
    • 1970-01-01
    • 2012-01-07
    • 1970-01-01
    • 2013-07-26
    • 2013-12-28
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    相关资源
    最近更新 更多