QThreadStorage Class

template <typename T> class QThreadStorage

QThreadStorage 클래스는 스레드별 데이터 스토리지를 제공합니다. 더 보기...

Header: #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는 스레드별 데이터 저장소를 제공하는 템플릿 클래스입니다.

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);
}

주의

  • 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()도 참조하세요 .

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