QThreadStorage 类

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 )

详细描述

QThreadStorage class provides per-thread data storage.

QThreadStorage is a template class that provides per-thread data storage.

setLocalData () 函数为调用线程存储单特定线程值。以后数据可以被访问使用 localData ().

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);
}
					

告诫

另请参阅 QThread .

成员函数文档编制

QThreadStorage:: QThreadStorage ()

构造新的每线程数据存储对象。

QThreadStorage:: ~QThreadStorage ()

销毁每线程数据存储对象。

注意:存储的每线程数据不会被删除。任何数据留在 QThreadStorage 会被泄漏。确保所有线程使用 QThreadStorage 已退出再删除 QThreadStorage .

另请参阅 hasLocalData ().

bool QThreadStorage:: hasLocalData () const

若 T 是指针类型,返回 true 若调用线程有非零可用数据。

若 T 是值类型,返回数据是否已经被构造通过调用 setLocalData or 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 ().