Я пытаюсь запустить алгоритм параллельных простых чисел в многопоточности, используя связанные списки.Однако, когда я запускаю функцию комбинированных списков, в моих списках нет данных.
Я попытался создать массив связанных списков и векторов.Я думаю, что это проблема с указателем, так как они оба дали мне одну и ту же проблему
Это моя основная функция, которую выполняет каждый мой поток.
Когда я наблюдаю «подсписок» в отладчикепохоже, что он работает
void multiThreadFunctions(LinkedListNode *subList)
{
//some code
if (isPrime(i))
subList->addnode(i);
//more code
}
это фрагмент кода, который я использую для вращения новых потоков и передачи списков
LinkedListNode** Lists;
Lists = new LinkedListNode*[threadsCount];
vector<std::thread> threads;
for (int i = 0; i < threadsCount; ++i)
{
LinkedListNode *newlist = new LinkedListNode;
//needed for indexing to divide up the work equally
newlist->listid = i;
newlist->threads = threadsCount;
newlist->max = max;
threads.push_back(thread(multiThreadFunctions, ref(newlist)));
Lists[i] = newlist;
}
// loop again to join the threads
for (auto& t : threads)
{
//cout << Lists[1].returnsize();
t.join();
}
Я хочу, чтобы этот код прикреплял огромный связанный список,или, по крайней мере, есть способ получить доступ к номеру после завершения потоков
//At this point I want an array of linked lists with prime numbers
for (int i = 0; i < threadsCount; ++i)
{
MainList.CombineLists(Lists[i]);
}
В отладчике он показывает, что списки пусты, и я не могу понять, почему
Я хочу, чтобы у меня был доступ ко всем данным, чтобы я мог их распечатать или записать в файл.