Tôi có bit sau của C + + 11 mã có sử dụng các chủ đề và biến initialisations tĩnh. Câu hỏi của tôi là:C++ tĩnh inialization và chủ đề
Bảo đảm hoặc đảm bảo ngôn ngữ C++ thực hiện việc khởi tạo biến tĩnh đơn lẻ - mã bên dưới hiển thị các giá trị chính xác, tuy nhiên dường như tôi không tìm thấy đoạn văn trong tiêu chuẩn mới đề cập đến cách thức mô hình bộ nhớ nên tương tác với chủ đề. Khi nào các biến trở thành 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;
}