QThreadStorage Class
template <typename T> class QThreadStorageLa classe QThreadStorage fournit un stockage de données par thread. Plus d'informations...
| En-tête : | #include <QThreadStorage> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Core)target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake : | QT += core |
- Liste de tous les membres, y compris les membres hérités
- QThreadStorage fait partie de Threading Classes.
Remarque : toutes les fonctions de cette classe sont sûres pour les threads.
Fonctions publiques
| QThreadStorage() | |
| ~QThreadStorage() | |
| bool | hasLocalData() const |
| T & | localData() |
| T | localData() const |
| void | setLocalData(T data) |
Description détaillée
QThreadStorage est une classe modèle qui fournit un stockage de données par thread.
La fonction setLocalData() stocke une valeur unique spécifique au thread qui l'appelle. Les données peuvent être consultées ultérieurement à l'aide de la fonction localData().
La fonction hasLocalData() permet au programmeur de déterminer si des données ont déjà été définies à l'aide de la fonction setLocalData(). Cette fonction est également utile pour l'initialisation paresseuse.
Si T est un pointeur, QThreadStorage prend possession des données (qui doivent être créées sur le tas avec new) et les supprime lorsque le thread se termine, soit normalement, soit via la terminaison.
Par exemple, le code suivant utilise QThreadStorage pour stocker un seul cache pour chaque thread qui appelle les fonctions cacheObject() et removeFromCache(). Le cache est automatiquement supprimé lorsque le thread appelant se termine.
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); }
Mise en garde
- Le destructeur de QThreadStorage ne supprime pas les données par thread. QThreadStorage ne supprime les données par thread que lorsque le thread se termine ou lorsque setLocalData() est appelé plusieurs fois.
- QThreadStorage peut être utilisé pour stocker les données du thread
main(). QThreadStorage supprime toutes les données définies pour le threadmain()lorsque QApplication est détruit, que le threadmain()soit terminé ou non.
Voir également QThread.
Documentation des fonctions membres
QThreadStorage::QThreadStorage()
Construit un nouvel objet de stockage de données par thread.
QThreadStorage::~QThreadStorage()
Détruit l'objet de stockage des données par thread.
Remarque : les données stockées par thread ne sont pas supprimées. Toutes les données laissées dans QThreadStorage sont perdues. Assurez-vous que tous les threads utilisant QThreadStorage sont sortis avant de supprimer QThreadStorage.
Voir aussi hasLocalData().
bool QThreadStorage::hasLocalData() const
Si T est un type pointeur, renvoie true si le thread appelant dispose de données non nulles.
Si T est un type valeur, renvoie si les données ont déjà été construites en appelant setLocalData ou localData.
Voir aussi localData().
T &QThreadStorage::localData()
Renvoie une référence aux données qui ont été définies par le thread appelant.
Si aucune donnée n'a été définie, cela créera une instance construite par défaut de type T.
Voir aussi setLocalData() et hasLocalData().
T QThreadStorage::localData() const
Renvoie une copie des données qui ont été définies par le thread appelant.
Il s'agit d'une fonction surchargée.
Voir aussi hasLocalData().
void QThreadStorage::setLocalData(T data)
Définit les données locales pour le thread appelant à data. Il est possible d'y accéder ultérieurement à l'aide des fonctions localData().
Si T est un pointeur, QThreadStorage devient propriétaire des données et les supprime automatiquement, soit lorsque le thread se termine (normalement ou par terminaison), soit lorsque setLocalData() est appelé à nouveau.
Voir également localData() et hasLocalData().
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.