이 페이지에서

Qt Concurrent

Qt Concurrent 모듈은 뮤텍스, 읽기-쓰기 잠금, 대기 조건, 세마포어와 같은 저수준 스레딩 기본 요소를 사용하지 않고도 멀티스레드 프로그램을 작성할 수 있게 해주는 고수준 API를 제공합니다. Qt Concurrent 로 작성된 프로그램은 사용 가능한 프로세서 코어 수에 따라 사용되는 스레드 수를 자동으로 조정합니다. 즉, 오늘 작성된 애플리케이션은 향후 멀티코어 시스템에 배포되더라도 계속해서 확장성을 유지할 수 있습니다.

Qt Concurrent 에는 병렬 리스트 처리를 위한 함수형 프로그래밍 스타일의 API가 포함되어 있으며, 여기에는 공유 메모리(비분산) 시스템을 위한 MapReduce 및 FilterReduce 구현과 GUI 애플리케이션에서 비동기 계산을 관리하기 위한 클래스가 포함됩니다:

Qt Concurrent 여러 STL 호환 컨테이너 및 이터레이터 유형을 지원하지만, QList 와 같이 랜덤 액세스 이터레이터를 가진 Qt 컨테이너에서 가장 잘 작동합니다. map 및 filter 함수는 컨테이너와 begin/end 이터레이터를 모두 받아들입니다.

STL 이터레이터 지원 개요:

이테레이터 유형예시 클래스지원 상태
입력 이터레이터지원되지 않음
출력 이터레이터지원되지 않음
전방 이터레이터std::forward_list지원됨
양방향 이터레이터std::list지원됨
임의 접근 이터레이터QList, std::vector지원되며 권장됨

Qt Concurrent 가 대량의 경량 항목을 순회하는 경우, 랜덤 액세스 이터레이터는 컨테이너 내의 임의 지점으로 건너뛸 수 있으므로 더 빠른 성능을 보일 수 있습니다. 또한, 랜덤 액세스 이터레이터를 사용하면 Qt Concurrent 에서 QFuture::progressValue() 및 QFutureWatcher::progressValueChanged()를 통해 진행 상황을 확인할 수 있습니다.

mapped() 및 filtered()와 같은 비인플레이스 수정 함수는 호출 시 컨테이너의 복사본을 생성합니다. STL 컨테이너를 사용하는 경우 이 복사 작업에 다소 시간이 소요될 수 있으므로, 이 경우에는 대신 컨테이너의 시작 및 종료 이터레이터를 지정하는 것을 권장합니다.

모듈 사용

Qt 모듈을 사용하려면 모듈 라이브러리와 직접 또는 다른 종속성을 통해 링크해야 합니다. CMake 및 qmake를 비롯한 여러 빌드 도구가 이를 위해 전용 지원을 제공합니다.

CMake를 사용한 빌드

find_package() 명령을 사용하여 Qt6 패키지 내에서 필요한 모듈 구성 요소를 찾으십시오:

find_package(Qt6 REQUIRED COMPONENTS Concurrent)
target_link_libraries(mytarget PRIVATE Qt6::Concurrent)

‘CMake를 사용한 빌드 ’ 개요도 참조하십시오.

qmake를 사용한 빌드

qmake를 사용하여 모듈을 빌드하도록 구성하려면, 프로젝트의 .pro 파일에서 QT 변수의 값으로 해당 모듈을 추가하십시오:

QT += concurrent

예시

모듈의 진화

Qt Concurrent 의 변경 사항에는 Qt 6 시리즈를 위해 모듈 API 및 기능에 적용된 주요 변경 사항이 나열되어 있습니다.

라이선스

Qt Concurrent 모듈은 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.