QThreadStorage Class
template <typename T> class QThreadStorageLa classe QThreadStorage permet le stockage de données par thread. En savoir plus...
| 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 des classes de gestion des threads.
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 de modèle dont le paramètre de modèle T spécifie le type de données stockées par thread.
La fonction setLocalData() stocke une valeur unique spécifique au thread appelant. Ces données sont ensuite accessibles via 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(). Cela est également utile pour l’initialisation paresseuse.
Si T est un type pointeur, `QThreadStorage` prend possession des données (qui doivent être créées sur le tas à l’aide de ` new`) et les supprime lorsque le thread se termine, que ce soit normalement ou par interruption.
Par exemple, le code suivant utilise QThreadStorage pour stocker un cache unique pour chaque thread appelant 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);
}Mises en garde
- L'appel de ` hasLocalData()`, ` localData()` ou ` setLocalData()` lors de l'arrêt d'un thread ou du programme peut recréer le stockage local au thread pour le thread actuel, sans qu'il ne reste rien pour le détruire par la suite.
- Le destructeur de `QThreadStorage` ne supprime pas les données propres au thread. `QThreadStorage` ne supprime ces données que lorsque le thread se termine ou lorsque ` setLocalData()` est appelé plusieurs fois.
- QThreadStorage peut être utilisé pour stocker des données destinées au thread
main(). QThreadStorage supprime toutes les données définies pour le threadmain()lorsque QApplication est détruit, que le threadmain()ait effectivement terminé ou non.
Voir également QThread.
Documentation sur les fonctions membres
QThreadStorage::QThreadStorage()
Crée un nouvel objet de stockage de données par thread.
QThreadStorage::~QThreadStorage()
Détruit l'objet de stockage de données par thread.
Remarque : les données par thread stockées ne sont pas supprimées. Toute donnée restante dans ` QThreadStorage ` fait l'objet d'une fuite. Assurez-vous que tous les threads utilisant ` QThreadStorage ` se sont terminés avant de supprimer ` QThreadStorage`.
Voir également 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 de valeur, renvoie si les données ont déjà été construites en appelant setLocalData ou localData.
Voir également localData().
T &QThreadStorage::localData()
Renvoie une référence aux données définies par le thread appelant.
Si aucune donnée n'a été définie, cette fonction crée une instance de type T construite par défaut.
Voir également setLocalData() et hasLocalData().
T QThreadStorage::localData() const
Renvoie une copie des données définies par le thread appelant.
Il s'agit d'une fonction surchargée.
Voir également hasLocalData().
void QThreadStorage::setLocalData(T data)
Définit les données locales du thread appelant à l'adresse data. Il est possible d'y accéder ultérieurement à l'aide des fonctions localData().
Si T est un type pointeur, ` QThreadStorage ` prend possession des données et les supprime automatiquement soit à la sortie du thread (qu'elle soit normale ou due à une interruption), soit lorsque `setLocalData()` est à nouveau appelée.
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.