Ho il seguente bit di codice C++ 11 che utilizza i thread e le inizializzazioni delle variabili statiche. La mia domanda è:Inalization e thread delle variabili statiche C++
Quali garanzie o assicurazioni fa il linguaggio C++ sulla singola inizializzazione di variabili statiche - il codice sotto mostra i valori corretti, tuttavia non riesco a trovare il passaggio nel nuovo standard che menziona come il modello di memoria dovrebbe interagire con i thread. Quando mai le variabili diventano thread-local?
#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;
}