#include <thread>
#include <vector>
using namespace std;
thread_local vector<int> v;
void foo(int n)
{
for(int i=0 ; i<n ; i++)
v.push_back(i);
}
int main()
{
vector<thread> thread_array;
for(int i=0 ; i<4 ; i++)
thread_array.push_back(thread(foo,100));
for(int i=0 ; i<4 ; i++)
thread_array.at(i).join();
return 0;
}
这个程序在到达第二个for循环(加入的循环)后崩溃了,但并非总是如此。有时它退出很好,有时会崩溃。
导致这种情况的原因是什么?