The QThreadStorage class provides per-thread data storage. 更多...
头: | #include <QThreadStorage> |
qmake: | QT += core |
注意: 此类的所有函数 thread-safe .
QThreadStorage () | |
~QThreadStorage () | |
bool | hasLocalData () const |
T & | localData () |
T | localData () const |
void | setLocalData (T data ) |
The QThreadStorage class provides per-thread data storage.
QThreadStorage is a template class that provides per-thread data storage.
The setLocalData () 函数为调用线程存储单特定线程值。以后数据可以被访问使用 localData ().
The hasLocalData () 函数允许程序员确定先前是否有设置数据使用 setLocalData () 函数。这对惰性初始化也很有用。
若 T 是指针类型,
QThreadStorage
takes ownership of the data (which must be created on the heap with
new
) 并在线程正常退出或凭借终止退出时删除它。
For example, the following code uses QThreadStorage to store a single cache for each thread that calls the cacheObject() and removeFromCache() functions. The cache is automatically deleted when the calling thread exits.
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()
thread.
QThreadStorage
deletes all data set for the
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 ().