ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Qt QtConcurrent(Qt thread)
    Qt 2021. 1. 5. 15:56

    Qt에서 thread를 지원해주는 기능이다. 

    Qt에서 기본적으로 thread를 사용 하는 방법은 아래와 같다

    class SimpleThread : public QThread
    {
        Q_OBJECT
    
        void run() override {
            for(int i = 0 ; i < 10 ; i++) {
                sleep(1);
                ++numUsed;
                qDebug("numUsed : %d", numUsed);
            }
        }
    
    public:
        SimpleThread() {}
    };
    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
    
        SimpleThread simpleThread;
        simpleThread.start();
    
        return a.exec();
    }

    아래는 QtConcurrent를 이용한 thread 사용 예이다. 

    void hello(QString name)
    {
        qDebug() << "Hello" << name << "from" << QThread::currentThread();
    
        for(int i = 0 ; i < 3 ; i++)
        {
            QThread::sleep(1);
            qDebug("[%s] i = %d", name.toLocal8Bit().data(), i);
        }
    }
    
    
    
    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
        
        QFuture<void> f1 = QtConcurrent::run(hello, QString("Alice")); // hello함수가 thread형태로 수행이 된다. 
        QFuture<void> f2 = QtConcurrent::run(hello, QString("Bob"));
    
        f1.waitForFinished();
        f2.waitForFinished();
    
        return a.exec();
    }

    QtConcurrent::run() - 다른 쓰레드에서 함수를 실행한다.

    QFuture - 비동기의 결과를 제어하는 클래스이다.

    QFuture는 실제로 waitForFinished()<결과를 기다리거나>, result()<결과 값을 확인하거나>, cancel(), pause(), or resume()등의 메소드들을 제공한다.

    'Qt' 카테고리의 다른 글

    Qt Quick and QML 설명  (0) 2021.02.05
    Qt Designer  (0) 2021.01.04
    Qt Signal / Slot  (0) 2020.12.31
    Qt 프로젝트 파일(.pro)  (0) 2020.12.24
    Qt 설치 하기  (0) 2020.12.22
Designed by Tistory.