#include <thread>
#include <vector>
using namespace std;
class my_class {
public:
my_class() {};
~my_class() {};
string info;
};
my_class& get_my_class_instance()
{
// C++11之前:产生条件竞争 一个线程正在初始化变量,在未完成前其他线程也开始初始化
// C++11:初始化及定义完全在一个线程中发生,并且没有其他线程可在初始化完成前对其进行处理
static my_class instance[10000000];
instance[9999].info = "info message";
return instance[9999];
}
int main() {
vector<thread> threads;
for (int i = 0; i < 10; ++i) {
threads.push_back(thread(get_my_class_instance));
}
for_each(threads.begin(), threads.end(), mem_fn(&thread::join));
return 0;
}