РЕДАКТИРОВАТЬ: в исходном вопросе thread_array был объявлен как vector<thread> thread_array(4);
вместо vector<thread> thread_array;
, что вызвало ошибку - это было отредактировано сейчас, но проблема сохраняется.
Исходя из этого вопроса: Программа на C ++ иногда падает, когда join () - нить потоков
Мне удалось сузить ее до этой очень простой программы, которую, надеюсь, вы сможете легко скомпилировать и запустить:
#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 (присоединяющегося)?Это ошибка MinGW?Насколько я знаю, я не должен делать ничего лишнего с вектором thread_local.Я могу опубликовать подробности, если это необходимо.