Qt TaskTree
Qt TaskTree는 적절한 오류 처리 및 실행 정책을 적용하여 비동기 작업 워크플로를 구성하고 실행할 수 있는 선언적 방식을 제공합니다.
참고: 6.12 버전의Qt TaskTree는 기술 미리보기(Technology Preview) 단계에 있으므로, 해당 API는 Qt의 호환성 보장 대상에서 제외됩니다.
시작하기
Qt TaskTree를 사용하면 다양한 실행 정책, 병렬/순차 실행 및 적절한 오류 처리를 통해 복잡한 태스크 계층 구조를 만들 수 있습니다.
핵심 개념:
- 레시피 (Recipes ) - 작업 워크플로우에 대한 선언적 설명.
- 그룹 - 자식 태스크의 실행 정책을 정의하는 컨테이너입니다.
- 저장소 - 태스크 간 데이터 공유를 위한 스레드 로컬 저장 시스템.
- 이테레이터 - 루프 및 반복적인 태스크 실행을 지원합니다.
모듈 사용법
Qt 모듈의 C++ API를 사용하려면 모듈 라이브러리에 직접 또는 다른 종속성을 통해 링크해야 합니다. CMake와 qmake를 비롯한 여러 빌드 도구가 이를 위해 전용 지원을 제공합니다.
CMake를 사용한 빌드
find_package() 명령을 사용하여 Qt6 패키지 내에서 필요한 모듈 구성 요소를 찾으십시오:
find_package(Qt6 REQUIRED COMPONENTS TaskTree)
target_link_libraries(mytarget PRIVATE Qt6::TaskTree)자세한 내용은 ‘CMake를 사용한 빌드’ 개요를 참조하십시오.
qmake를 사용한 빌드
qmake를 사용하여 모듈을 빌드하도록 구성하려면, 프로젝트의 .pro 파일에서 QT 변수의 값으로 모듈을 추가하십시오:
QT += tasktree태스크 어댑터
이 모듈에는 일반적인 작업을 위한 몇 가지 내장 태스크 어댑터가 포함되어 있습니다:
- QProcessTask - 외부 프로세스를 실행합니다.
- QThreadFunctionTask - 별도의 스레드에서 함수를 실행합니다.
- QNetworkReplyWrapperTask - 네트워크 작업을 처리합니다.
- QTcpSocketWrapperTask - TCP 소켓 작업을 처리합니다.
- QBarrierTask - 동기화 기본 기능을 제공합니다.
- QTimeoutTask - 타이머 기반의 지연 시간을 제공합니다.
워크플로 정책
그룹은 작업 결과를 처리하기 위해 다양한 워크플로 정책을 지원합니다:
- StopOnError - 첫 번째 오류 발생 시 실행을 중지합니다(기본값).
- ContinueOnError - 오류가 발생하더라도 실행을 계속합니다.
- StopOnSuccess - 첫 번째 작업이 성공하면 중지합니다.
- ContinueOnSuccess - 작업이 성공적으로 완료되더라도 계속 진행합니다.
- StopOnSuccessOrError - 첫 번째 작업이 완료되면 중지합니다.
- FinishAllAndSuccess - 모든 작업을 실행하고 성공을 보고합니다.
- FinishAllAndError - 모든 작업을 실행하고 오류를 보고합니다.
예제
참조
라이선스
Qt TaskTree 모듈은 The Qt Company에서 제공하는 상용 라이선스를 통해 이용할 수 있습니다. 또한, GNU Lesser General Public License 버전 3 또는 GNU General Public License 버전 2와 같은 자유 소프트웨어 라이선스 하에서도 이용할 수 있습니다. 자세한 내용은 Qt 라이선싱을 참조하십시오.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.