Spec-Zone.ru › Qt 5.12

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

Spec-Zone.ru

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