如何分配线程本地存储?
|
我的函数中有一个静态变量,但我希望每个线程都将其设为静态。
如何为C ++类分配内存,以便每个线程都有自己的类实例副本?
AnotherClass::threadSpecificAction()
{
// How to allocate this with thread local storage?
static MyClass *instance = new MyClass();
instance->doSomething();
}
这是在Linux上。我没有使用C ++ 0x,这是gcc v3.4.6。
没有找到相关结果
已邀请:
9 个回复
诫商
超可林
关键字。 这是存储期限说明符的示例:
可能的输出:
磁辫覆氓
是便携式解决方案的最佳方法。 在Linux和GCC上,您可以使用
修饰符。 因此,您的实例变量将如下所示:
疾桓
痰嫉
一种可选的优化方法是也在线程本地存储上进行分配。
淘圃跺枯替
蹦吃舷弦
魄龟呸筹
主要问题是(在boost :: thread_specific_ptr中解决了)标有它的变量不能包含ctor或dtor。
嫩昧竞莫
,但只消耗一个
,快4倍 比
)。 如果您正在寻找本地存储线程的可移植实现,则此库是一个不错的选择。