美文网首页
qt如何的创建线程,主线程等待所有线程结束

qt如何的创建线程,主线程等待所有线程结束

作者: 诸事圆成 | 来源:发表于2021-01-25 15:43 被阅读0次

    用qt的线程池去管理你的线程。比如下面的列子,目的是开5个线程,处理自己的事情,并且主线程等待所有线程结束。

    #include "mainwindow.h"
    
    #include <QApplication>
    #include <QThreadPool>
    #include <QRunnable>
    #include <QString>
    #include <QStringList>
    
    #include <QDebug>
    
    /* func */
    int myFunc(QString str)
    {
        qDebug() <<  QThread::currentThreadId();
        qDebug() <<  str;
    
        return 0;
    }
    
    /* thread interface */
    class myThread : public QRunnable
    {
       void run() override
       {
            myFunc(m_text);
       }
    
       QString m_text;
    
    public:
       myThread(QString str) : m_text(str) {}
    };
    
    
    
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
    
        QThreadPool pool;
        pool.setMaxThreadCount(5);
        pool.setExpiryTimeout(-1);
    
        QStringList list;
        list << "111" << "222" << "333" << "444" << "555";
    
        for (int i=0; i<list.size(); i++)
        {
            pool.start(new myThread(list[i]));
        }
    
        pool.waitForDone();
    
    
        return 0;
        return a.exec();
    }
    
    

    打印测试结果


    image.png

    相关文章

      网友评论

          本文标题:qt如何的创建线程,主线程等待所有线程结束

          本文链接:https://www.haomeiwen.com/subject/hlqizktx.html