Tengo el siguiente bit del código C++ 11 que usa subprocesos e inicializaciones de variables estáticas. Mi pregunta es:inialización de variables estáticas C++ e hilos
¿Qué garantías o garantías tiene el lenguaje C++ sobre la inicialización única de variables estáticas? El código siguiente muestra los valores correctos, sin embargo, no puedo encontrar el pasaje en el nuevo estándar que menciona cómo el modelo de memoria debe interactuar con los hilos. ¿Cuándo es que las variables se vuelven locales?
#include <iostream>
#include <thread>
class theclass
{
public:
theclass(const int& n)
:n_(n)
{ printf("aclass(const int& n){}\n"); }
int n() const { return n_; }
private:
int n_;
};
int operator+(const theclass& c, int n)
{
return c.n() + n;
}
void foo()
{
static theclass x = 1;
static theclass y = x + 1;
printf("%d %d\n",x.n(),y.n());
}
int main()
{
std::thread t1(&foo);
std::thread t2(&foo);
t1.join();
t2.join();
return 0;
}