Spec-Zone.ru › Qt 5.14

Класс 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.14/qthreadstorage.html

Spec-Zone.ru

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