Spec-Zone.ru › Qt 5.9

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

Spec-Zone.ru

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