【发布时间】:2013-12-15 09:06:16
【问题描述】:
我的任务是对 N 个整数表进行排序。我从文件中读取的每个表并存储在一个数组中。 我想创建一个程序,用户选择多少线程应该对所有表进行排序(每个线程一个表)。例如,当我使用 4 个线程并有 11 个数组进行排序时,我不知道如何解决这种情况。
我的代码(不正确):
#include <thread>
for (int i = 0; i < amountOfThreads; i++)
{
listOfThreads[i] = thread();
}
// ...
while (!listOfArraysToBeSort.empty())
{
for (int i = 0; i < amountOfThreads; i++)
{
if (i>amountOfThreads) i = 0;
thread t1( listOfArraysToBeSort[index2]);
listOfThreads.push_back(t1);
listOfArraysToBeSort.erase(listOfArraysToBeSort.begin()+index2);
index2++;
}
thread t1(&ArrayToBeSort::startASM, &listOfArraysToBeSort[index2]);
t1.join();
}
【问题讨论】:
-
ArrayToBeSort::startASM到底是什么,你有什么特别的问题?您在填充之前正确调整了listOfThreads的大小? -
startASM 执行:打开带有数字的文件,将其加载到数组并使用用汇编程序编写的 DLL 对其进行排序。矢量
listOfThreads (amountOfThreads);
标签: c++ multithreading dynamic c++11