C++中的静态属性

Mik*_*ite 1 c++ static multithreading

使用这样的伪代码:

class FooBar {
public:
    int property;
    static int m_static;
}

FooBar instance1 = new FooBar();
FooBar instance2 = new FooBar();
Run Code Online (Sandbox Code Playgroud)

如果我设置instance1的属性,它显然不会影响第二个.但是,如果我改为设置静态属性,则更改应传播到类的每个实例.

如果instance1和2在不同的线程中,这也会发生吗?

ken*_*ytm 9

一个static成员基本上是绑定到一个类的全局变量(不是一个实例!).全局变量不是线程局部的,因此对该变量的更改将反映在所有线程中.

(顺便说一下,C++ 98没有线程的概念.在C++ 0x中你可以使用线程本地(通过§9.4.2/ 1)

static thread_local int static_property;
Run Code Online (Sandbox Code Playgroud)

但这并没有得到广泛的支持.)