C++:如何创建线程局部/全局变量

Alb*_*ert 8 c++ variables static multithreading

在这段代码中:

int foo() {
   static int x;
}
Run Code Online (Sandbox Code Playgroud)

x每个线程中所有线程或本地的全局?或者这取决于编译器标志和/或编译器,所以我真的不知道代码是什么?

几个问题(所有问题都独立于编译器和编译器标志和操作系统):

  1. 如何创建一个对所有线程都是全局的静态变量?
  2. 如何创建每个线程本地的静态变量?
  3. 如何创建一个对所有线程都是全局的全局变量?
  4. 如何创建每个线程本地的全局变量?

我想这不是C++本身.(它是在C++ 0x?)一些Boost lib可以做到这一点?

ust*_*sta 6

x对所有线程都是全局的.始终,独立于编译器和/或其标志.与C++ 11还是C++ 03无关.因此,如果您声明一个常规的全局或静态局部变量,它将在所有线程之间共享.在C++ 11中,我们将使用thread_local关键字.在此之前,您可以使用Boost.Thread中的thread_specific_ptr.