Alb*_*ert 8 c++ variables static multithreading
在这段代码中:
int foo() {
static int x;
}
Run Code Online (Sandbox Code Playgroud)
是x每个线程中所有线程或本地的全局?或者这取决于编译器标志和/或编译器,所以我真的不知道代码是什么?
几个问题(所有问题都独立于编译器和编译器标志和操作系统):
我想这不是C++本身.(它是在C++ 0x?)一些Boost lib可以做到这一点?
x对所有线程都是全局的.始终,独立于编译器和/或其标志.与C++ 11还是C++ 03无关.因此,如果您声明一个常规的全局或静态局部变量,它将在所有线程之间共享.在C++ 11中,我们将使用thread_local关键字.在此之前,您可以使用Boost.Thread中的thread_specific_ptr.