代码之家  ›  专栏  ›  技术社区  ›  CW Holeman II

具有语言功能的线程特定内存

  •  1
  • CW Holeman II  · 技术社区  · 16 年前

    是否有语言支持在一个地址空间中处理公共内存,在另一个地址空间中使用语言功能而不是通过函数调用之类的机制来线程特定内存?

    process int x;
    thread int y;
    
    3 回复  |  直到 16 年前
        1
  •  0
  •   ripper234 Jonathan    16 年前

    ThreadStatic C语言中的属性

        2
  •  0
  •   peterchen    16 年前

    VisualC++编译器允许后者通过非标准。 __declspec(thread) 但是,扩展非常有限,因为动态加载的DLL不支持扩展。

    第一个主要通过 extern 声明-除非动态链接库发挥作用(这可能是您正在寻找的场景)。

    我不知道有什么环境能像你描述的那样简单。

        3
  •  0
  •   Jesse Hall    16 年前

    C++0x添加了“THeLexOnLead”存储说明符,所以在命名空间(或全局)范围中,您的示例将是

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

    不幸的是,这并不是VisualStudio 2010或计划的GCC发布支持的C++ 0x特性之一。