Qt의 스레드 지원

Qt는 플랫폼 독립적인 스레딩 클래스, 스레드 안전 이벤트 게시 방식, 스레드 간 신호 슬롯 연결 등의 형태로 스레드 지원을 제공합니다. 이를 통해 휴대용 멀티스레드 Qt 애플리케이션을 쉽게 개발하고 멀티프로세서 머신을 활용할 수 있습니다. 멀티스레드 프로그래밍은 또한 애플리케이션의 사용자 인터페이스를 멈추지 않고 시간이 많이 걸리는 작업을 수행하는 데 유용한 패러다임입니다.

이전 버전의 Qt는 스레드 지원 없이 라이브러리를 빌드할 수 있는 옵션을 제공했습니다. Qt 4.0부터는 스레드가 항상 활성화되어 있습니다.

토픽:

이 글에서는 독자가 멀티스레드 응용 프로그램에 대한 기본적인 지식을 가지고 있다고 가정합니다.

스레딩 클래스

이 클래스는 스레드 응용 프로그램과 관련이 있습니다.

Concurrent Filter and Filter-Reduce

시퀀스에서 값을 선택하고 병렬로 결합하기

Concurrent Map and Map-Reduce

시퀀스에서 값을 변환하고 병렬로 결합하기

Concurrent Run

별도의 스레드에서 작업을 실행하는 간단한 방법

Concurrent Task

별도의 스레드에서 작업을 실행하는 구성 가능한 방법

QAtomicInteger

정수에 대한 플랫폼 독립적인 원자 연산

QAtomicPointer

포인터에 대한 플랫폼 독립적 원자 연산을 제공하는 템플릿 클래스

QFuture

비동기 계산의 결과를 나타냅니다.

QFutureSynchronizer

QFuture 동기화를 간소화하는 편의 클래스

QFutureWatcher

신호와 슬롯을 사용하여 QFuture를 모니터링할 수 있습니다.

QMutex

스레드 간 직렬화에 액세스

QMutexLocker

뮤텍스 잠금 및 잠금 해제를 간소화하는 편의 클래스

QPromise

QFuture에서 액세스하기 위해 계산 결과를 저장하는 방법

QReadLocker

읽기 액세스를 위한 읽기-쓰기 잠금 및 잠금 해제를 간소화하는 편의 클래스

QReadWriteLock

읽기-쓰기 잠금

QRecursiveMutex

스레드 간 직렬화 액세스

QRunnable

모든 실행 가능한 객체의 베이스 클래스

QSemaphore

일반 계수 세마포어

QSemaphoreReleaser

QSemaphore::release() 호출의 예외 안전 디퍼런트

QThread

플랫폼에 독립적인 스레드 관리 방법

QThreadPool

Q스레드 컬렉션 관리

QThreadStorage

스레드별 데이터 저장

QWaitCondition

스레드 동기화를 위한 조건 변수

QWriteLocker

쓰기 액세스를 위한 읽기-쓰기 잠금 잠금 및 잠금 해제를 간소화하는 편의 클래스

QtConcurrent

저수준 스레딩 프리미티브를 사용하지 않고도 멀티스레드 프로그램을 작성할 수 있게 해주는 상위 수준 API

QtConcurrent::QTaskBuilder

작업 매개변수 조정에 사용

QtFuture::WhenAnyResult

QtFuture::언제어디서든 결과는 QtFuture::언제어디서든()의 결과를 표현하는 데 사용됩니다.

QAtomicInteger::qYieldCpu()

참고: Qt의 스레딩 클래스는 네이티브 스레딩 API (예: Win32와 pthreads)로 구현됩니다. 따라서 동일한 네이티브 API의 스레드와 함께 사용할 수 있습니다.

© 2025 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.