Spec-Zone.ru › Qt 5.11

Класс QThreadStorage

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

Заголовок: #include <QThreadStorage>
qmake: QT += core
  • Список всех членов, включая унаследованные

Примечание: Все функции в этом классе являются безопасными для потоков.

Публичные функции

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

Подробное описание

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

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/archives/qt-5.11/qthreadstorage.html

Spec-Zone.ru

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