En esta página

QThreadStorage Class

template <typename T> class QThreadStorage

La clase QThreadStorage proporciona almacenamiento de datos por hilo. Más...

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

Nota: Todas las funciones de esta clase son thread-safe.

Funciones Públicas

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

Descripción Detallada

QThreadStorage es una clase de plantilla que proporciona almacenamiento de datos por thread.

La función setLocalData() almacena un único valor específico para el thread que lo llama. Los datos pueden ser accedidos posteriormente usando localData().

La función hasLocalData() permite al programador determinar si los datos se han establecido previamente utilizando la función setLocalData(). Esto también es útil para la inicialización perezosa.

Si T es un tipo puntero, QThreadStorage toma posesión de los datos (que deben ser creados en el heap con new) y los borra cuando el hilo sale, ya sea normalmente o a través de la terminación.

Por ejemplo, el siguiente código utiliza QThreadStorage para almacenar una única caché por cada hebra que llame a las funciones cacheObject() y removeFromCache(). La caché se borra automáticamente cuando el proceso que la llama finaliza.

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

Advertencias

  • El destructor de QThreadStorage no borra los datos por thread. QThreadStorage sólo borra los datos por thread cuando el thread sale o cuando setLocalData() es llamado múltiples veces.
  • QThreadStorage puede ser utilizado para almacenar datos para el thread main(). QThreadStorage borra todos los datos establecidos para el hilo main() cuando se destruye QApplication, independientemente de si el hilo main() ha finalizado o no.

Ver también QThread.

Documentación de las funciones miembro

QThreadStorage::QThreadStorage()

Construye un nuevo objeto de almacenamiento de datos por hilo.

QThreadStorage::~QThreadStorage()

Destruye el objeto de almacenamiento de datos por hilo.

Nota: Los datos por hilo almacenados no se borran. Cualquier dato que quede en QThreadStorage se filtra. Asegúrate de que todos los hilos que utilizan QThreadStorage han salido antes de borrar QThreadStorage.

Véase también hasLocalData().

bool QThreadStorage::hasLocalData() const

Si T es un tipo puntero, devuelve true si la hebra llamante tiene datos disponibles distintos de cero.

Si T es un tipo valor, devuelve si los datos ya han sido construidos llamando a setLocalData o localData.

Véase también localData().

T &QThreadStorage::localData()

Devuelve una referencia a los datos que fueron establecidos por el hilo de llamada.

Si no se ha establecido ningún dato, se creará una instancia construida por defecto de tipo T.

Véase también setLocalData() y hasLocalData().

T QThreadStorage::localData() const

Devuelve una copia de los datos establecidos por el subproceso que realiza la llamada.

Se trata de una función sobrecargada.

Véase también hasLocalData().

void QThreadStorage::setLocalData(T data)

Establece los datos locales del subproceso llamante en data. Se puede acceder a ellos más tarde utilizando las funciones localData().

Si T es un tipo puntero, QThreadStorage toma posesión de los datos y los borra automáticamente cuando el hilo sale (normalmente o por terminación) o cuando setLocalData() es llamado de nuevo.

Véase también localData() y 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.