이 페이지에서

QThreadStorage Class

template <typename T> class QThreadStorage

QThreadStorage 클래스는 스레드별 데이터 저장 기능을 제공합니다. 더 보기...

헤더: #include <QThreadStorage>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core

참고: 이 클래스의 모든 함수는 스레드 안전합니다.

공개 함수

QThreadStorage()
~QThreadStorage()
bool hasLocalData() const
T &localData()
T localData() const
void setLocalData(T data)

상세 설명

QThreadStorage는 템플릿 클래스로, 템플릿 매개변수 T 는 스레드별로 저장되는 데이터의 유형을 지정합니다.

setLocalData() 함수는 호출 스레드에 대해 단일 스레드 전용 값을 저장합니다. 이 데이터는 나중에 localData()를 사용하여 액세스할 수 있습니다.

hasLocalData() 함수를 사용하면 프로그래머는 setLocalData() 함수를 통해 데이터가 이전에 설정되었는지 여부를 확인할 수 있습니다. 이는 지연 초기화에도 유용합니다.

T가 포인터 유형인 경우, QThreadStorage는 데이터( new 를 사용하여 힙에 생성되어야 함)에 대한 소유권을 가지며, 스레드가 정상적으로 종료되거나 강제 종료될 때 해당 데이터를 삭제합니다.

예를 들어, 다음 코드는 QThreadStorage를 사용하여 cacheObject() 및 removeFromCache() 함수를 호출하는 각 스레드마다 하나의 캐시를 저장합니다. 캐시는 호출하는 스레드가 종료될 때 자동으로 삭제됩니다.

QThreadStorage<QCache<QString, SomeClass> > caches;

void cacheObject(const QString &key, SomeClass *object)
{
    caches.localData().insert(key, object);
}

void removeFromCache(const QString &key)
{
    if (!caches.hasLocalData())
        return;

    caches.localData().remove(key);
}

주의 사항

  • 스레드 또는 프로그램 종료 중에 hasLocalData(), localData() 또는 setLocalData()를 호출하면, 현재 스레드에 대한 스레드 로컬 저장소가 다시 생성될 수 있으며, 이후 이를 파괴할 수 있는 방법이 남아 있지 않을 수 있습니다.
  • QThreadStorage의 소멸자는 스레드별 데이터를 삭제하지 않습니다. QThreadStorage는 스레드가 종료되거나 setLocalData()이 여러 번 호출될 때만 스레드별 데이터를 삭제합니다.
  • QThreadStorage는 main() 스레드의 데이터를 저장하는 데 사용할 수 있습니다. QThreadStorage는 QApplication 가 소멸될 때, main() 스레드가 실제로 종료되었는지 여부와 관계없이 main() 스레드에 설정된 모든 데이터를 삭제합니다.

QThread도 참조하십시오 .

멤버 함수 문서

QThreadStorage::QThreadStorage()

스레드별로 새로운 데이터 저장 객체를 생성합니다.

QThreadStorage::~QThreadStorage()

스레드별 데이터 저장 객체를 삭제합니다.

참고: 저장된 스레드별 데이터는 삭제되지 않습니다. ` QThreadStorage `에 남아 있는 데이터는 메모리 누수가 발생합니다. ` QThreadStorage`을 삭제하기 전에 ` QThreadStorage `을 사용하는 모든 스레드가 종료되었는지 확인하십시오.

hasLocalData()도 참조하십시오 .

bool QThreadStorage::hasLocalData() const

T가 포인터 유형인 경우, 호출 스레드에 0이 아닌 데이터가 있는 경우 ` true `를 반환합니다.

T가 값형인 경우, 해당 데이터가 이미 setLocalData 또는 localData 를 호출하여 생성되었는지 여부를 반환합니다.

localData()도 참조하십시오 .

T &QThreadStorage::localData()

호출 스레드가 설정한 데이터에 대한 참조를 반환합니다.

데이터가 설정되지 않은 경우, T 형식의 기본 생성된 인스턴스를 생성합니다.

setLocalData() 및 hasLocalData()도 참조하십시오 .

T QThreadStorage::localData() const

호출 스레드가 설정한 데이터의 복사본을 반환합니다.

이 함수는 오버로드된 함수입니다.

hasLocalData()도 참조하십시오 .

void QThreadStorage::setLocalData(T data)

호출 스레드의 로컬 데이터를 ` data`로 설정합니다. 이 데이터는 나중에 ` localData()` 함수를 사용하여 액세스할 수 있습니다.

T가 포인터 유형인 경우, ` QThreadStorage `는 데이터에 대한 소유권을 가져가며, 스레드가 종료될 때(정상 종료 또는 강제 종료) 또는 `setLocalData()`가 다시 호출될 때 데이터를 자동으로 삭제합니다.

localData() 및 hasLocalData()도 참조하십시오 .

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