是否存在使用语言特性而不是通过函数调用之类的机制来支持一个地址空间中的进程公共内存和另一个地址空间中的线程特定内存的语言?
process int x;
thread int y;发布于 2009-06-27 13:31:36
C#中的ThreadStatic属性
发布于 2009-06-27 13:17:47
Visual C++编译器允许后者通过非标准的__declspec(thread)扩展-但是,它受到严格的限制,因为它在动态加载的DLL中不受支持。
第一种主要是通过extern声明来支持的-除非动态链接库开始发挥作用(这可能就是您正在寻找的场景)。
我不知道有任何环境可以让这件事像你所描述的那样简单。
发布于 2009-06-28 06:21:02
C++0x添加了"thread_local“存储说明符,因此在名称空间(或全局)范围内,您的示例将是
int x; // normal process-wide global variable
thread_local int y; // per-thread global variable在函数中声明类成员或局部变量时,也可以将thread_local与static一起使用:
class Foo {
static thread_local int x;
};
void f() {
static thread_local int x;
}不幸的是,这似乎不是Visual Studio2010或计划中的GCC版本支持的C++0x功能之一。
https://stackoverflow.com/questions/1052279
复制相似问题