-
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