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在不同的线程中,这也会发生吗?
一个static成员基本上是绑定到一个类的全局变量(不是一个实例!).全局变量不是线程局部的,因此对该变量的更改将反映在所有线程中.
(顺便说一下,C++ 98没有线程的概念.在C++ 0x中你可以使用线程本地(通过§9.4.2/ 1)
static thread_local int static_property;
Run Code Online (Sandbox Code Playgroud)
但这并没有得到广泛的支持.)
| 归档时间: |
|
| 查看次数: |
250 次 |
| 最近记录: |