Spec-Zone.ru › Qt 5.15

Класс QThreadStorage

шаблон <typename T> класс QThreadStorage

Класс QThreadStorage предоставляет хранилище данных на уровне потоков. Подробнее...

Заголовок: #include <QThreadStorage>
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 удаляет все данные, установленные для main() потока, при уничтожении QApplication, независимо от того, завершил ли main() поток свою работу.

См. также QThread.

Документация по членам-функциям

QThreadStorage::QThreadStorage()

Конструирует новый объект хранения данных на уровне потоков.

QThreadStorage::~QThreadStorage()

Уничтожает объект хранения данных на уровне потоков.

Примечание: данные на уровне потоков не удаляются. Любые данные, оставшиеся в QThreadStorage, утекут. Убедитесь, что все потоки, использующие QThreadStorage, завершили работу перед удалением QThreadStorage.

См. также hasLocalData().

bool QThreadStorage::hasLocalData() const

Если T — тип указателя, возвращает 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().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.15/qthreadstorage.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API