QThreadStorage 类提供每线程数据存储。 更多...
头: | #include <QThreadStorage> |
CMake: |
find_package(Qt6 COMPONENTS Core REQUIRED)
target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
注意: 此类的所有函数 thread-safe .
QThreadStorage () | |
~QThreadStorage () | |
bool | hasLocalData () const |
T & | localData () |
T | localData () const |
void | setLocalData (T data ) |
QThreadStorage 是提供每线程数据存储的模板类。
setLocalData () 函数为调用线程存储单特定线程值。以后数据可以被访问使用 localData ().
hasLocalData () 函数允许程序员确定先前是否有设置数据使用 setLocalData () function. This is also useful for lazy initialization.
若 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); }
main()
线程。QThreadStorage 会删除所有数据集为
main()
线程当
QApplication
被销毁,不管是否
main()
线程实际已完成。
另请参阅 QThread .
构造新的每线程数据存储对象。
销毁每线程数据存储对象。
注意:存储的每线程数据不会被删除。任何数据留在 QThreadStorage 会被泄漏。确保所有线程使用 QThreadStorage 已退出再删除 QThreadStorage .
另请参阅 hasLocalData ().
若 T 是指针类型,返回
true
若调用线程有非零可用数据。
若 T 是值类型,返回数据是否已经被构造通过调用 setLocalData or localData .
另请参阅 localData ().
返回由调用线程设置的数据的引用。
若未设置数据,这将创建默认 T 类型构造实例。
另请参阅 setLocalData () 和 hasLocalData ().
这是重载函数。
返回由调用线程设置的数据的副本。
另请参阅 hasLocalData ().
把调用线程的本地数据设为 data 。以后可以访问它使用 localData () 函数。
若 T 是指针类型, QThreadStorage 拥有数据的所有权,并自动删除它当线程退出 (正常或凭借终止) 时或当 setLocalData() 被再次调用。
另请参阅 localData () 和 hasLocalData ().